什么是Rxjava赚楚?
Rxjava是基于?觀察者模式含长,使用?操作符?和?異步操作?來處理復雜的業(yè)務
基于觀察者模式的Rxjava。
觀察者模式:A 對 B 的動作變化在一瞬間作出的反應调俘,則A稱之為觀察者辜窑,B稱之為被觀察者。
三個關(guān)鍵詞
1 ?觀察者
2 ?被觀察者
3 ?觀察者與被觀察者連接
在Rxjava中
觀察者被稱之為 Observer
被觀察者被稱之為 Observable
觀察者與被觀察者連接被稱之為?subscribe()
觀察者
Observer 即觀察者吊趾,事件觸發(fā)時將會采取行為宛裕。
RxJava 觀察者的事件回調(diào)方法除了普通事件onNext()之外瑟啃,還定義了兩個特殊的事件:onCompleted()和onError()。
onCompleted()代表事件隊列完結(jié)揩尸。
onError()代表事件隊列異常蛹屿。
創(chuàng)建一個觀察者:
被觀察者
Observable 即被觀察者,表示事件的觸發(fā)岩榆。
創(chuàng)建一個被觀察者:3種方法
1. 使用create()
2.使用 just()
3.使用 from()
將觀察者與被觀察者連接
進一步加深 —?Subscriber
Subscriber是對Observer接口進行了一點擴展错负,但是大體相同,Subscriber與Observer的區(qū)別是Subscriber多了onStart()和unsubscribe()兩個方法勇边。
Action
在創(chuàng)建觀察者時犹撒,會有onNext(),onCompleted()和onError()三個方法粒褒,而Action中使用call()將三者整合识颊。
Action也是RxJava 的一個接口,最常用的是Action0和Action1怀浆。
Action0和Action1的區(qū)別是在call()方法中谊囚,Action0無參數(shù),Action1有一個參數(shù)执赡。
操作符
map:用來類型轉(zhuǎn)換的镰踏,也可以輸入一個類,提取類中的屬性值沙合。
flatMap:是針對一組數(shù)據(jù)進行類型的轉(zhuǎn)換奠伪。
filter:集合進行過濾
each:遍歷集合
take:取出集合中的前幾個
skip:跳過前幾個元素
異步
之前對Rxjava的介紹都是同步的,在當前線程中執(zhí)行首懈,由于Rxjava默認是在當前線程中執(zhí)行绊率,如果遇到一些復雜耗時的操作,就需要指定新的線程究履,再進行回調(diào)滤否。
Scheduler
可以指定代碼在某一特定的線程中執(zhí)行
subscribeOn() ?指定新的線程(位置放在哪里都可以)
observeOn() ?回調(diào)的線程(可以多次使用,切換不同的線程)
AndroidSchedulers.mainThread() ?它指定的操作將在 Android 主線程運行
這種使用方式非常常見最仑,它適用于多數(shù)的 『后臺線程取數(shù)據(jù)藐俺,主線程顯示』的程序策略
參考:給 Android 開發(fā)者的 RxJava 詳解??
(本文部分內(nèi)容引用這些博客)