当在后台而不是在活动/片段中使用时,如何在RxJava2中处置单一观察者。
我知道如果在Activity / Fragment中使用Single,那么可以将其添加到复合处理器中,并以Activity / Fragment的onDestroy方法进行处理。
但是从其他地方调用它时,该如何处置呢?
如果从Activity / Fragment调用Single并希望在onDestroy调用之前对其进行处置,还有其他处置方法吗?
答案 0 :(得分:0)
当您ConsumerSingleObserver
处置BiConsumerSingleObserver
和Single
时,subscribe
返回的两个默认观察者(onError
和onSuccess
) 。如果您传入自己的自定义SingleObserver
,则需要决定何时处置它。
Single只会调用这些方法之一,并且只会调用一次。调用任一方法后,Single终止,对其的订阅结束。 (http://reactivex.io/documentation/single.html)
在某些情况下,您可能需要先处置SingleObserver
,然后再处置它,在这种情况下,您只需要在{{1}返回的dispose
上调用Disposable
}。呼叫的时间和地点实际上取决于您的具体情况。
如果您的subscribe
在销毁生命周期的对象(例如HTTP调用)之前没有完成,则必须将观察者置于生命周期对象的destroy回调中。