Насколько я понимаю, AndroidObservable помогает убедиться, что:
- Подписчик всегда наблюдает за основным потоком
- когда фрагмент/активность отсоединяется/останавливается, наблюдение немедленно останавливается, а компоненты, связанные с фреймворком (например, текстовые представления пользовательского интерфейса и т. д.), не обновляются.
Однако, чтобы гарантировать освобождение контекста (предотвращая утечку), в большинстве примеров, которые я вижу, обычно говорится, что вы все равно должны выполнить .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();
}