前面一直使用的是Rxjava 1.x 版本,最近 Rxjava 2.x 版本發佈了,而且支持了背壓,便換成了 Rxjava 2.x 版本。更換以後出現了下面的錯誤。java
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)
錯誤的大意就是:不可以爲Flowable
建立一個 Call Adapter 。首先想到的多是Retrofit
的adapter-rxjava
版本太低的問題,因而換成了最新版本react
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
替換以後仍是出現了相同的問題,那就說明不是版本的問題了。去 Google 搜索一番後,找到jakewharton
大神的回答說adapter-rxjava
目前還不支持Rxjava 2.x
。固然這麼牛逼的庫怎麼能不支持Rxjava 2.x
呢,jakewharton
大神本身寫了一個庫讓Retrofit
來支持Rxjava 2.x
這裏是連接:retrofit2-rxjava2-adapter。
果真加入jakewharton
大神的庫以後,問題就解決了。須要注意的一個地方是:git
//原來的: addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //修改後的: addCallAdapterFactory(RxJava2CallAdapterFactory.create())
後面我看到jakewharton
大神的回答是9月份的時候,想必如今官方已經修復這個問題了吧,去Square
Github 主頁找到retrofit-adapters
,官網確實已經更新了retrofit-adapters
。github
可是添加依賴的時候,不知道具體的版本號,網上找了一圈也沒找到,點擊下載JAR
包,直接404
了,具體不知道怎麼回事,等待官方修復這個問題吧。不過錯誤能夠用jakewharton
大神的庫直接解決。ui