我有一个Activity我正在创建和订阅Single该类的多个实例(每个在一个单独的后台线程中做一些工作).对于每个订阅,我将Disposable创建的CompositeDisposable实例添加到作用域的实例Activity.当Activity被销毁时,我正在调用CompositeDisposable.clear()方法来处理所有订阅Activity.这当然意味着所有Disposable实例(包括那些已经完成工作的订阅的实例)都会在我的实例中出现,Activity直到Activity被销毁为止.
这是可以的,还是我应该Disposable.dispose()在每次特定Single实例完成工作时(即SingleObserver接收onSuccess或onError回调时)调用每个单独的订阅?后一种方法的问题在于我必须跟踪哪个Disposable与哪个相关SingleObserver(这使得使用点失效CompositeDisposable).每次Single实例完成工作时,是否有更好的方法来处理订阅?
yos*_*riz 18
不,你不应该.当一个Observable完成后,Observable它会自行处理掉.
这是Observable合同的一部分:
当Observable向其观察者发出OnError或OnComplete通知时,这将结束订阅.观察者不需要发出取消订阅通知来结束以这种方式由Observable结束的订阅.