当在后台使用而不是在 Activity/Fragment 中使用时,如何在 RxJava2 中处理单个观察者

Dar*_*asi 3 android rx-android rx-java2

当在后台使用而不是在 Activity/Fragment 中使用时,如何在 RxJava2 中处理单个观察者。

我知道如果在 Activity/Fragment 中使用 Single,则可以将其添加到复合处置器中,并在 Activity/Fragment 的 onDestroy 方法中对其进行处置。

但是当从其他地方调用它时如何处理它呢?

另外,如果从 Activity/Fragment 调用 Single,并且我们想在调用 onDestroy 之前处置它,还有哪些其他方法来处置 Single?

Mak*_*kyy 5

当您处置自己和时返回的两个默认观察者 (ConsumerSingleObserver和) 。如果您传入自己的自定义,则需要决定何时处理它。BiConsumerSingleObserverSinglesubscribeonErroronSuccessSingleObserver

Single 只会调用其中一个方法,并且只会调用一次。调用任一方法后,Single 就会终止,对其的订阅也会结束。(http://reactivex.io/documentation/single.html

SingleObserver在某些情况下,您可能希望在 自行处置之前处置,在这种情况下,您只需要调用disposeaDisposable返回的subscribe。何时何地调用它实际上取决于您的具体情况。

如果Single在生命周期对象被销毁(例如 HTTP 调用)之前未完成,则必须在生命周期对象的销毁回调中处置观察者。