Как я понимаю AndroidObservable помогает:
- Подписчик всегда наблюдает за основным потоком
- когда фрагмент/активность отключается/останавливается, тогда наблюдение прекращается немедленно, а связанные с картой компоненты (такие как ui textviews и т.д.) не обновляются.
Однако, чтобы обеспечить освобождение контекста (предотвращение утечки), большинство примеров, которые я вижу, обычно говорят о том, что вы все равно должны выполнять .unsubscribe onDestroyView/onDestroy, что существенно приостанавливает подписку и предотвращает получение подписчика эти обновления в любом случае.
Итак, мой вопрос:
Есть ли другие преимущества использования AndroidObservables, если я укажу вручную, что подписка должна выполняться в основном потоке с помощью .observeOn(AndroidSchedulers.mainThread()?
Есть ли разница в следующих двух подходах?
_subscription1 = AndroidObservable.bindFragment(MyFragment.this, myCustomAwesomeObservable()) //
.subscribeOn(Schedulers.io()) //
.subscribe(...);
_subscription2 = myCustomAwesomeObservable()
.subscribeOn(Schedulers.io()) //
.observeOn(AndroidSchedulers.mainThread()) //
.subscribe(...);
@Override
public void onDestroyView() {
_subscription1.unsubscribe();
_subscription2.unsubscribe();
super.onDestroyView();
}