当在后台而不是在活动/片段中使用时,如何在RxJava2中处理单个观察者。
我知道如果Single在Activity/Fragment中使用,那么它可以添加到复合处理器中,并在Activity/Fragment的onDestroy方法中处理。
但是,当它从其他地方被调用时,该如何处理呢?
此外,如果Single是从Activity/Fragment调用的,并且我们希望在调用onDestroy之前处理它,那么处理它的其他方法是什么?
subscribe
自行处理onError
和onSuccess
时由Single
返回的两个默认观察程序(ConsumerSingleObserver
和BiConsumerSingleObserver
(。如果你通过了自己的自定义SingleObserver
,你需要决定何时处理它。
Single将只调用其中一个方法,并且只调用一次。调用任一方法后,Single将终止,对它的订阅也将结束。(http://reactivex.io/documentation/single.html)
在某些情况下,您可能希望在SingleObserver
自行处理之前先处理它,在这种情况下,只需要对subscribe
返回的Disposable
调用dispose
。你何时何地打电话取决于你的具体情况。
如果您的Single
在生命周期对象被销毁之前没有完成(例如HTTP调用(,则必须在该生命周期对象的销毁回调中处理观察器。