3
A
回答
4
因爲RxJava不知道Observable內部運行的代碼,所以你不能真正告訴observable取消網絡請求。你可以做的是使用doOnUnsubscribe
來檢查網絡請求是否仍在運行,如果它取消了,那麼只需取消訂閱即可取消。
2
這應該給你一個總的想法。摘要將使用Observable.using()
並訂閱Observable
並使用Subscriber
,因此當用戶單擊按鈕取消時,您可以撥打subscriber.unsubscribe()
。
這是一個大綱。
Subscriber<T> subscriber = ...;
Observable
// create a stream from a socket and dispose of socket
// appropriately
.using(socketCreator(host, port, quietTimeoutMs),
socketObservableFactory(charset),
socketDisposer(), true)
// cannot ask host to slow down so buffer on
// backpressure
.onBackpressureBuffer()
.subscriber(subscriber);
在點擊一個按鈕調用:
subscriber.unsubscribe()
這將停止觀測的流,並呼籲socketDisposer()
停止網絡活動。
您尚未指定下載的性質(ftp,http等),但答案並未真正改變,因爲所有這些傳輸都適合這種模式。
+1
是的,'使用'是一個好主意,但我可能會讓按鈕點擊被動,並且只使用'Observable'。 ... ..takeUntil(button.clickedSource())'而不是使用訂閱者。 –
相關問題
- 1. 如何取消訂閱RxJava中的單一Observable
- 2. RxJava Observable來消除事件的連發
- 3. 獲取RxJava Observable的當前值
- 4. 與其他Observable過濾RxJava Observable
- 5. 將RxJava Observable轉換爲RxScala Observable
- 6. 如何在RxJava中的另一個observable內部封裝observable?
- 7. RxJava從Observable更新數據
- 8. RxJava Observable,按需發射
- 9. RxJava 2也許用Observable
- 10. RxJava Observable永不執行onCompleted
- 11. RxJava - Observable的zip列表
- 12. 相當於RxJava的RxJS.pausable(Observable)
- 13. Retrofit 2 + RxJava取消/取消訂閱
- 14. 如何刷新RxJava中的observable?
- 15. 如何緩存RxJava/RxScala中的observable
- 16. 改進請求取消RxJava
- 17. 如何在RxJava中的自定義Observable中獲得觀察者的取消訂閱操作的通知
- 18. Rxjava,如何設計必須等待另一個Observable的Observable
- 19. RxJava - Observable:一個可觀察比返回其他Observable
- 20. 如何在取消訂閱上取消異步Observable線程
- 21. 使用卡夫卡通過Observable(RxJava)
- 22. 訂閱RxJava Observable從春季背景
- 23. RxJava observable:調用onError,然後重試
- 24. 用於RxJava的泛型Observable的TestScheduler
- 25. RxJava Observable和Subscriber用於跳過異常?
- 26. RxJava一次只能執行一個Observable
- 27. RxJava-無法訪問Observable的訂戶?
- 28. 如何鏈接多個observable與RxJava?
- 29. 由Observable Rxjava包裝遺留的AsyncTask?
- 30. RxJava棘手的開始With(Observable)
你能提供一些你已經試過的代碼嗎? – Gluck