RxJava2出現:Unable to create call adapter for io.reactivex.Flowable


前面一直使用的是Rxjava 1.x 版本,最近 Rxjava 2.x 版本發布了,並且支持了背壓,便換成了 Rxjava 2.x 版本。更換之后出現了下面的錯誤。

  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 。首先想到的可能是Retrofitadapter-rxjava版本過低的問題,於是換成了最新版本

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大神的庫之后,問題就解決了。需要注意的一個地方是:

//原來的:
addCallAdapterFactory(RxJavaCallAdapterFactory.create())
//修改后的:
addCallAdapterFactory(RxJava2CallAdapterFactory.create())

后面我看到jakewharton大神的回答是9月份的時候,想必現在官方已經修復這個問題了吧,去Square Github 主頁找到retrofit-adapters,官網確實已經更新了retrofit-adapters

retrofit-adapters

但是添加依賴的時候,不知道具體的版本號,網上找了一圈也沒找到,點擊下載JAR包,直接404了,具體不知道怎么回事,等待官方修復這個問題吧。不過錯誤可以用jakewharton大神的庫直接解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM