RxJava1 與 RxJava2
RxJava 有 RxJava1
和 RxJava2
冈欢,兩者不能共存。
如果APP中使用的是 RxJava2
,但是某個第三方的 library 還在使用 Rxjava1
也會出現(xiàn)異常欧募。
如下面??這種引用方式:
implementation "io.reactivex.rxjava2:rxjava:2.2.6"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.5.0'
就會出現(xiàn)
Unable to create call adapter for io.reactivex.Observable
是因為retrofit2 中的 calladapter
用的是rxjava1
粮坞,與rxjava2
不兼容,無法創(chuàng)建calladapter侥猩。
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
mRetrofit = new Retrofit.Builder()
.client(client)//添加一個client,不然retrofit會自己默認添加一個
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
需要修改成:
同時使用RxJava1 或RxJava2
- build.gradle
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
implementation "io.reactivex.rxjava2:rxjava:2.2.6"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
mRetrofit = new Retrofit.Builder()
.client(client)//添加一個client,不然retrofit會自己默認添加一個
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();