Retrofit 與 RxJava 結合使用出現的異常處理

RxJava1 與 RxJava2

RxJava 有 RxJava1RxJava2,二者不能共存。java

若是APP中使用的是 RxJava2 ,可是某個第三方的 library 還在使用 Rxjava1 也會出現異常。react

以下面👇這種引用方式:android

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'
複製代碼

就會出現bash

Unable to create call adapter for io.reactivex.Observable
複製代碼

是由於retrofit2 中的中的 calladapter 用的是rxjava1,與rxjava2不兼容,沒法建立 calladapter。gradle

import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;

    mRetrofit = new Retrofit.Builder()
            .client(client)//添加一個client,否則retrofit會本身默認添加一個
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();
複製代碼

須要修改爲:ui

同時使用RxJava1 或RxJava2url

  • 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();
複製代碼
相關文章
相關標籤/搜索