Я уже некоторое время использую RxJava.Я использую операторы subscribeOn
и observeOn
для управления потоками.Я использую subscribeOn
, чтобы запустить наблюдаемое излучение в потоке io
или computation
, и наблюдаю результат в основном потоке, используя observeOn(AndroidSchedluers.mainThread())
В моем приложении поток обычно выглядит следующим образом
compositeDisposable.add(observable()
.flatMap(result-> { // do something })
.map(result -> // doSomething)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()))
.subscribeWith(new DisposableObserver<Object>() {
@Override
public void onNext(Object o) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
}));
Как видите, Обозреватель, который я добавляю к CompositeDisposable
, чтобы в случае, если моя активность или фрагмент выходят из области видимости во время выполнения наблюдаемой операции в фоновом потоке, я мог безопасно отключиться.наблюдатель от цепи, чтобы избежать утечек памяти.Довольно просто.
Но в некоторых примерах я видел оператор unSubscribeOn
, используемый для отмены подписки в определенном потоке.Я как бы не понимаю фактической необходимости в этом.Фактически, я никогда не использовал это, у меня не было никаких утечек памяти, так как я не использовал его.
Это то, что нам нужно использовать всегда?Или кто-нибудь может объяснить некоторые случаи использования, когда нам нужно перейти на unSubscribeOn
?
Я также сослался на официальную документацию и некоторые примеры, но вроде не переваривал ее.Если бы кто-то мог объяснить с помощью образца, это было бы очень полезно.