Подтвердить что ты не робот

Почему следует рассматривать использование 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();
}
4b9b3361

Ответ 1

Вы правы. В настоящее время AndroidObservable.bindFragment:

Этот помощник будет планировать данную последовательность, которая будет наблюдаться в основном потоке пользовательского интерфейса, и гарантировать, что никакие уведомления не будут перенаправлены на активность в случае, если она будет завершена.

- часть комментария исходного кода

Итак, на самом деле не имеет значения, какая из реализаций вы используете.

Но, по-прежнему, неплохо было бы использовать AndroidObservable в качестве дополнительной функциональности, которая может быть добавлена ​​в будущем.

Ответ 2

Он больше не существует начиная с версии 1.0 RxAndroid. Думаю, вы могли бы сказать, что это устарело или прекращено. Я не думаю, что это хорошая идея использовать это больше.