RxJava3와 Retrofit을 함께 사용하여 서버와 데이터를 주고 받아야 할 때
Retrofit을 Build할 때 RxJava3CallAdapterFactory를 추가해야한다.
private val retrofit = Retrofit.Builder()
.client(client)
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build()
우선 CallAdapter는 Call<R>을 T 타입으로 변환해주는 인터페이스이다.
CallAdapter.Factory를 통해 CallAdapter 인스턴스를 생성할 수 있다.
여기서 Call타입은 Retrofit메서드의 API 호출 이후 응답을 반환하는 타입이고 Adapter를 통해 T타입으로 변환을 할 수 있다.
직접 CallAdapter를 구현할 수 있지만 RxJava를 위한 RxJava3CallAdapter 인스턴스를 생성할 수 있는 RxJava3CallAdapterFactory가 Retrofit 라이브러리에 제공이 되기 때문에 RxJava3CallAdapterFactory을 CallAdapterFactory로 추가하여 원하는 리턴타입을 지정하여 사용할 수 있다.
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Call.html
'Android > 메모' 카테고리의 다른 글
[Android] Fragment View Binding 사용 시 주의할 점 (0) | 2022.09.07 |
---|---|
[Android] 데이터바인딩 사용 시 숫자에 콤마(comma) 넣기 (0) | 2022.04.05 |
댓글