我在RxAndroid中使用了Retrofit 2,我希望在配置更改期間保持請求。我認爲我可以用Observable.cache()
這樣做,如this blog post和我見過的其他人所描述的那樣,但以下流程導致InterruptedException
。是否有可能重新訂閱改造2可觀察?
Observable<Result<List<Post>>> request =
postService.index(page).cache();
Subscription subscribeOne = request.subscribe();
subscribeOne.unsubscribe();
Subscription subscribeTwo = request.subscribe();
我敢肯定,在改裝源下面的代碼是負責取消的請求時unsubscribe
被調用。
// Attempt to cancel the call if it is still in-flight on unsubscription.
subscriber.add(Subscriptions.create(new Action0() {
@Override public void call() {
call.cancel();
}
}));
不取消訂閱可以使所有的工作,但這可能會導致泄漏。有沒有人設法通過Retrofit 2處理配置更改?我可以使用不同的方法嗎?
看到這是如何在活動環境中發揮作用,考慮到潛在的內存泄漏,必須在活動破壞後堅持主體/觀察性等等。 – AndroidEx
我只是在這個階段真正嘗試,但我有一個保留片段與演示者的「WeakHashMap」。在關閉活動時,主題取消訂閱,並且主講人爲GC'd。但是,我不認爲用戶在請求期間返回會取消請求。保留片段的'onDestroy()'中的某種關閉代碼可能是解決方案的一部分。 – Jimeux