前面一直使用的是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