Почему следует рассматривать использование AndroidObservables в RxJava
Как я понимаю 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();
}
Ответы
Ответ 1
Вы правы. В настоящее время AndroidObservable.bindFragment:
Этот помощник будет планировать данную последовательность, которая будет наблюдаться в основном потоке пользовательского интерфейса, и гарантировать, что никакие уведомления не будут перенаправлены на активность в случае, если она будет завершена.
- часть комментария исходного кода
Итак, на самом деле не имеет значения, какая из реализаций вы используете.
Но, по-прежнему, неплохо было бы использовать AndroidObservable в качестве дополнительной функциональности, которая может быть добавлена в будущем.
Ответ 2
Он больше не существует начиная с версии 1.0 RxAndroid. Думаю, вы могли бы сказать, что это устарело или прекращено. Я не думаю, что это хорошая идея использовать это больше.