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로 추가하여 원하는 리턴타입을 지정하여 사용할 수 있다.
Retrofit에 CallAdapter를 적용하는 법
개요
medium.com
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Call.html
Call (Retrofit 2.7.1 API)
An invocation of a Retrofit method that sends a request to a webserver and returns a response. Each call yields its own HTTP request and response pair. Use clone() to make multiple calls with the same parameters to the same webserver; this may be used to i
square.github.io
'Android > 메모' 카테고리의 다른 글
| [Android] Fragment View Binding 사용 시 주의할 점 (0) | 2022.09.07 |
|---|---|
| [Android] 데이터바인딩 사용 시 숫자에 콤마(comma) 넣기 (0) | 2022.04.05 |
댓글