2014-09-02 8 views
17

Come capisco AndroidObservable aiuta a garantire che:Perché si dovrebbe considerare l'utilizzo AndroidObservables in RxJava

  1. un abbonato osserva sempre sul filo principale
  2. quando un frammento/attività è staccato/fermo, prima di arrestarsi osservazione immediatamente e le componenti relative al framework (come le visualizzazioni di testo di ui ecc.) non vengono aggiornate.

Tuttavia, al fine di garantire che il contesto viene rilasciato (evitando perdite), la maggior parte degli esempi che vedo di solito dire che si deve fare comunque un .unsubscribe onDestroyView/OnDestroy, che arresta essenzialmente la sottoscrizione, e impedisce la abbonato da ricevere comunque questi aggiornamenti.

Quindi la mia domanda è:

C'è un altro vantaggio di utilizzare AndroidObservables, se indico manualmente che la sottoscrizione dovrebbe accadere sul thread principale, a titolo di .observeOn (AndroidSchedulers.mainThread()

?

c'è qualche differenza nelle sottostanti due approcci

_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(); 
} 

risposta

6

Hai ragione Cosa AndroidObservable.bindFragment attualmente fa è:?.

Questo helper pianificherà la sequenza indicata da osservare sul thread principale dell'interfaccia utente e assicurerà che nessuna notifica venga inoltrata all'attività nel caso in cui sia programmata per terminare.

- parte del codice sorgente di commento

Quindi, non davvero fare la differenza, che delle implementazioni che si usa.

Tuttavia, è comunque consigliabile utilizzare AndroidObservable poiché in futuro potrebbero essere aggiunte funzionalità aggiuntive.

+0

ah questo è un buon punto su funzionalità aggiuntive da aggiungere con la rotta AndroidObservable. –

1

Non esiste più dalla versione 1.0 di RxAndroid. Immagino tu possa dire che è deprecato o interrotto. Non penso sia una buona idea usarlo più.

Problemi correlati