我在RxJava2中遇到一个不寻常的问题。
基本上我们有以下情况:
现在通常我会根据自己的情况将所有代码放入CompositeDisposable并调用clear()或dispose()。使用后,此将停止观察已上传照片。
但是,在这种情况下,我无法调用clear()或dispose(),因为它将终止网络请求 t!照片通常为1-2 mb,通过调用处置它将终止网络请求...如何停止观察先前的流量并仅观察将来的上传,而不会终止先前的上传?
我知道应该有某种方式可以通知我观察到用户按下了后退按钮,但是我的所有尝试似乎都是脚的,并不干净。我想学习处理这种情况的正确方法。
我认为正确的方法是使用takeUntil
,因此您可以取消当前的上传,并在该点完成。然后,您需要使用repeat
重新订阅以供将来上传。
类似这样的东西:
compositeDisposable += nextButtonClicked
.firstOrError()
.flatMapCompletable {
networkUpload.takeUntil(backButtonClicked).ignoreElements()
}.repeat().subscribe()