1、RxJava 項目位址
2、RxAndroid 項目位址
3、RxJava 和 RxAndroid 的關系
RxAndroid是RxJava的一個針對Android平台的擴充,主要用于 Android 開發
4、RxJava和EventBus的差別?
5、RxAndroid的使用方法
compile 'io.reactivex:rxandroid:1.2.0'
6、如何檢視RxAndroid最新版本?
7、RxAndroid具體使用方法
從上文可以看到,Subscriber繼承Observer, 隻是 Subscriber對Observer做了一些擴充。Subscriber的使用和Observer完全一樣。
Subscriber 多了一個 onStart 方法
<code>onStart()</code>: 這是 <code>Subscriber</code> 增加的方法。它會在 subscribe 剛開始,而事件還未發送之前被調用,可以用于做一些準備工作,例如資料的清零或重置。這是一個可選方法,預設情況下它的實作為空。需要注意的是,如果對準備工作的線程有要求(例如彈出一個顯示進度的對話框,這必須在主線程執行), <code>onStart()</code> 就不适用了,因為它總是在 subscribe 所發生的線程被調用,而不能指定線程。要在指定的線程來做準備工作,可以使用 <code>doOnSubscribe()</code> 方法,具體可以在後面的文中看到。
Call()方法:當 <code>Observable</code> 被訂閱的時候,<code>OnSubscribe</code> 的 <code>call()</code> 方法會自動被調用,事件序列就會依照設定依次觸發(對于上面的代碼,就是觀察者<code>Subscriber</code> 将會被調用三次 <code>onNext()</code> 和一次 <code>onCompleted()</code>)。這樣,由被觀察者調用了觀察者的回調方法,就實作了由被觀察者向觀察者的事件傳遞,即觀察者模式。
由于觀察者可以由兩種方式被建立,是以訂閱的方式也有兩種
<code>Observable.subscribe(Subscriber)</code> 的内部實作是這樣的(僅核心代碼):
在subscribe() 中,首先會調用 onStart() 方法,這個方法前文已經介紹了,是可選的。接着會調用 call()方法,我們已經分析了在call()方法中會調用多次 onNext() ,最後調用 onCompleted().看到這裡你就會突然明白原來subscribe() 方法其實相當于依次執行了:onStart() --> onNext()--> onCompleted()
從這也可以看出,在 RxJava 中,<code>Observable</code> 并不是在建立的時候就立即開始發送事件,而是在它被訂閱的時候,即當 <code>subscribe()</code> 方法執行的時候。
<code>Observer</code> 和 <code>Subscriber</code> 具有相同的角色,而且 <code>Observer</code> 在 <code>subscribe()</code> 過程中最終會被轉換成 <code>Subscriber</code>對象
将傳入的 <code>Subscriber</code> 作為 <code>Subscription</code> 傳回。這是為了友善 <code>unsubscribe()</code>.
你是否聽說過EventBus , 他是android 中的事件總線。用rxjava同樣可以實作android的事件總線功能,也就是RxBus.
然而這并沒有什麼卵用 !
下面是RxBus的封裝版
RxBus的使用
在Activity銷毀的時候,要取消訂閱服務 。 否則 post() 次數會随着post()調用逐漸增加
除了上面的簡單使用外,還可以使用 Schedulers 、AndroidSchedulers 進行線程切換