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. 与其他Observable过滤RxJava Observable
- 4. 将RxJava Observable转换为RxScala Observable
- 5. 如何在RxJava中的另一个observable内部封装observable?
- 6. RxJava - Observable的zip列表
- 7. RxJava Observable永不执行onCompleted
- 8. RxJava 2也许用Observable
- 9. Retrofit 2 + RxJava取消/取消订阅
- 10. 如何缓存RxJava/RxScala中的observable
- 11. 如何刷新RxJava中的observable?
- 12. 如何在RxJava中的自定义Observable中获得观察者的取消订阅操作的通知
- 13. 如何在取消订阅上取消异步Observable线程
- 14. RxJava一次只能执行一个Observable
- 15. RxJava Observable和Subscriber用于跳过异常?
- 16. RxJava棘手的开始With(Observable)
- 17. RxJava observable:调用onError,然后重试
- 18. 由Observable Rxjava包装遗留的AsyncTask?
- 19. 如何链接多个observable与RxJava?
- 20. 用于RxJava的泛型Observable的TestScheduler
- 21. 订阅RxJava Observable从春季背景
- 22. 如何取消订阅rxJava请求
- 23. Asynctask status &&取消等效于RxJava2 Observable?
- 24. Rxjs - 重新订阅取消订阅Observable
- 25. 取消订阅observable的承诺
- 26. android rxjava observable fromCallable onNext函数在proguard激活后不会调用
- 27. RxJava:如何在不支持使用onType()时支持Observable?
- 28. RxJava:在不改变的情况下将回调变为Observable
- 29. RxJava 2.0中的Observable和Flowable有何区别?
- 30. 如何取消订阅广播接收器中的RXjava呼叫
你能提供一些你已经试过的代码吗? – Gluck