前面一直使用的是Rxjava 1.x 版本核芽,最近 Rxjava 2.x 版本發(fā)布了榨婆,并且支持了背壓,便換成了 Rxjava 2.x 版本氮唯。更換之后出現(xiàn)了下面的錯(cuò)誤鉴吹。
Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Flowable<com.sky.vision.entity.daily.DailyEntity>
for method ApiService.getDaily
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:720)
at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:234)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:160)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166)
at retrofit2.Retrofit$1.invoke(Retrofit.java:145)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy0.getDaily(Unknown Source)
錯(cuò)誤的大意就是:不能夠?yàn)?code>Flowable創(chuàng)建一個(gè) Call Adapter 。首先想到的可能是Retrofit
的adapter-rxjava
版本過低的問題惩琉,于是換成了最新版本
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
替換之后還是出現(xiàn)了相同的問題豆励,那就說明不是版本的問題了。去 Google 搜索一番后瞒渠,找到jakewharton
大神的回答說adapter-rxjava
目前還不支持Rxjava 2.x
良蒸。當(dāng)然這么牛逼的庫怎么能不支持Rxjava 2.x
呢,jakewharton
大神自己寫了一個(gè)庫讓Retrofit
來支持Rxjava 2.x
這里是鏈接:retrofit2-rxjava2-adapter伍玖。
果然加入jakewharton
大神的庫之后嫩痰,問題就解決了。需要注意的一個(gè)地方是:
//原來的:
addCallAdapterFactory(RxJavaCallAdapterFactory.create())
//修改后的:
addCallAdapterFactory(RxJava2CallAdapterFactory.create())
后面我看到jakewharton
大神的回答是9月份的時(shí)候窍箍,想必現(xiàn)在官方已經(jīng)修復(fù)這個(gè)問題了吧串纺,去Square
Github 主頁找到retrofit-adapters
丽旅,官網(wǎng)確實(shí)已經(jīng)更新了retrofit-adapters
。
但是添加依賴的時(shí)候造垛,不知道具體的版本號(hào),網(wǎng)上找了一圈也沒找到晰搀,點(diǎn)擊下載JAR
包五辽,直接404
了,具體不知道怎么回事外恕,等待官方修復(fù)這個(gè)問題吧杆逗。不過錯(cuò)誤可以用jakewharton
大神的庫直接解決。