Retrofit2+Rxjava2如何主動取消網路請求
阿新 • • 發佈:2019-02-11
近期在新專案中使用了Retrofit2+Rxjava2+Mvp的框架,在搭建的過程中想到一個問題,困擾了我兩天。Retrofit2+Rxjava2如何主動去取消網路請求。
在單獨使用Retrofit2中,我們可以通過呼叫Call的cancel();方法 主動去取消網路請求,但是當。Retrofit2+Rxjava2返回Observable 或者 Flowable 時我們如何主動去取消網路請求呢?
在剛學習Rxjava2時,我們都知道 通過呼叫 Disposable 的 dispose()方法能主動斷開 Observable和Observer之間的連線,但是能不能通過這個類去主動取消網路請求呢? 答案當然是 :可以的!!
來看看Retrofit2在搭配Rxjava2時的基本配置
Retrofit2+ Rxjava2
點開RxJava2CallAdapterFactory.create()我們看看原始碼:
在get方法中會返回RxJava2CallAdapter,繼續點選原始碼:
Observable/Flowable
沒錯,我們看到了我們熟悉的Observable和Flowable這就是Retrofit2+Rxjava2搭配所返回的Observable/Flowable 並綁定了Call類。我們看看這個Observable/Flowable到底和Call類幹了什麼勾當:點開同步執行的CallEnqueueObservable:
發現在dispose方法裡已經呼叫了 call.cancle();
至此困擾了兩天的疑惑就此解開!!MMP