Как избавиться от одного наблюдателя в RxJava2 при использовании в фоновом режиме, а не в Activity / Fragment - PullRequest
0 голосов
/ 29 октября 2018

Как избавиться от одного наблюдателя в RxJava2 при использовании в фоновом режиме, а не в Activity / Fragment.

Я знаю, что если Single используется в Activity / Fragment, то его можно добавить в композитный диспозитор и разместить в методе Activity / Fragment onDestroy.

Но как избавиться от него, когда он вызывается откуда-то еще?

Также, каковы другие способы удаления Single, если он вызывается из Activity / Fragment, и мы хотим удалить его до вызова onDestroy?

1 Ответ

0 голосов
/ 26 апреля 2019

Два наблюдателя по умолчанию (ConsumerSingleObserver и BiConsumerSingleObserver), которые возвращаются Single, когда вы subscribe распоряжаетесь собой onError и onSuccess. Если вы передадите свой собственный SingleObserver, вам нужно решить, когда его утилизировать.

Сингл вызовет только один из этих методов и вызовет его только один раз. При вызове любого из методов Single завершается, и подписка на него заканчивается. (http://reactivex.io/documentation/single.html)

В некоторых случаях вы можете захотеть утилизировать SingleObserver до того, как он утилизирует себя, и в этом случае вам просто нужно вызвать dispose на Disposable, возвращаемом subscribe. Когда и где вы звоните, это действительно зависит от вашей конкретной ситуации.

Если ваш Single не завершится до того, как ваш жизненно-циклический объект будет уничтожен (например, HTTP-вызовы), вы должны расположить наблюдателя в обратном вызове уничтожения жизненно-циклического объекта.

...