常用操作符
Observable.from()
- 它接收一個集合作爲輸入,然後每次輸出一個元素給subscriber,將集合依次發送,
map
- 用來把把一個事件轉換爲另一個事件的
flatmap
- 接收一個Observable的輸出作爲輸入,同時輸出另外一個Observable
concatmap
- 類似flatmap,區別是遵循事件的順序
switchmap
- observable發送新數據時,舊數據訂閱還未完成,取消舊的,開始新的
filter
- 過濾
take
- 指定數量
doOnNext
- 每次輸出一個元素之前做額外的事
doOnSubsrcibe
- 類似onStart(),不過可以指定線程,由之後的subscribeOn指定
subscribeOn
- 事件發送的線程,
subscribe()
所發生的線程,即Observable.OnSubscribe
被激活時所處的線程
obserberOn
- 事件接收的線程,
Subscriber
所運行在的線程,(可能是UI線程),切換之後操作所在的線程
Scheduler
- Schedulers.immediate() 默認在當前線程運行
- Schedulers.newThread()
- Scheduler.io 和
newThread()
差不多,區別在於io()
的內部實現是是用一個無數量上限的線程池,可以重用空閒的線程,因此多數情況下io()
比newThread()
更有效率 - Scheduler.commputation
- AndroidSchedulers.mainThread
CompositeSubscription
- 持有所有的Subscriptions,然後在onDestroy()或者onDestroyView()裏取消所有的訂閱
debounce
- 發送指定時間以後的數據,可用於防抖
onBackpressureBuffer
- 防止數據發送過快,緩存起來
ofType(class)
- 指定某個類型的class,過濾屬於這個類型的的結果,其它拋棄
buffer
- 收集單個事件輸出一個數組
concat
- 將多個observable ,按順序串聯起來
first
- 從串聯隊列中取出併發送第一個事件,也可以依次過濾(三級緩存)
compose
- 如果你只是想把幾個常用的操作函數封裝爲一個函數來複用代碼,則請使用 compose()
- Read more: http://blog.chengyunfeng.com/?p=987#ixzz4UqrCbki2
combineLastest
CombineLatest
操作符行爲類似於zip
,但是隻有當原始的Observable中的每一個都發射了一條數據時zip
才發射數據。CombineLatest
則在原始的Observable中任意一個發射了數據時發射一條數據。當原始Observables的任何一個發射了一條數據時,CombineLatest
使用一個函數結合它們最近發射的數據,然後發射這個函數的返回值。
doOnRequest
- 控制請求數量
- 參考:http://blog.chengyunfeng.com/?p=981
RxBinding
android 監聽事件包裝
RxView.clicks
RxTextView.textChanges
RxAdapterView.itemClicks