2014-09-02 3 views
17

Как я понимаю AndroidObservable помогает гарантировать, что:Почему следует рассмотреть вопрос об использовании AndroidObservables в RxJava

  1. Абонент всегда наблюдает в основном потоке
  2. когда фрагмент/активность отсоединяется/остановлен, затем останавливается наблюдения немедленно, а также связанные с каркасом компоненты (например, 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(); 
} 

ответ

6

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

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

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

Таким образом, это на самом деле не делают разницы, какой из реализаций вы используете.

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

+0

ах, это хорошая мысль о добавлении дополнительной функциональности с помощью AndroidObservable route. –

1

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

Смежные вопросы