常用操作符
Observable.from()
- 它接收一個集合作為輸入强岸,然后每次輸出一個元素給subscriber,將集合依次發(fā)送所宰,
map
- 用來把把一個事件轉(zhuǎn)換為另一個事件的
flatmap
- 接收一個Observable的輸出作為輸入检疫,同時輸出另外一個Observable
concatmap
- 類似flatmap蟀俊,區(qū)別是遵循事件的順序
switchmap
- observable發(fā)送新數(shù)據(jù)時,舊數(shù)據(jù)訂閱還未完成,取消舊的,開始新的
filter
- 過濾
take
- 指定數(shù)量
doOnNext
- 每次輸出一個元素之前做額外的事
doOnSubsrcibe
- 類似onStart(),不過可以指定線程,由之后的subscribeOn指定
subscribeOn
- 事件發(fā)送的線程曼库,
subscribe()
所發(fā)生的線程慈省,即Observable.OnSubscribe
被激活時所處的線程
img
obserberOn
- 事件接收的線程臀防,
Subscriber
所運行在的線程,(可能是UI線程)边败,切換之后操作所在的線程
img
Scheduler
- Schedulers.immediate() 默認(rèn)在當(dāng)前線程運行
- Schedulers.newThread()
- Scheduler.io 和
newThread()
差不多清钥,區(qū)別在于io()
的內(nèi)部實現(xiàn)是是用一個無數(shù)量上限的線程池,可以重用空閑的線程放闺,因此多數(shù)情況下io()
比newThread()
更有效率 - Scheduler.commputation
- AndroidSchedulers.mainThread
CompositeSubscription
- 持有所有的Subscriptions祟昭,然后在onDestroy()或者onDestroyView()里取消所有的訂閱
debounce
- 發(fā)送指定時間以后的數(shù)據(jù),可用于防抖
onBackpressureBuffer
- 防止數(shù)據(jù)發(fā)送過快怖侦,緩存起來
ofType(class)
- 指定某個類型的class篡悟,過濾屬于這個類型的的結(jié)果谜叹,其它拋棄
buffer
- 收集單個事件輸出一個數(shù)組
concat
- 將多個observable ,按順序串聯(lián)起來
first
- 從串聯(lián)隊列中取出并發(fā)送第一個事件搬葬,也可以依次過濾(三級緩存)
compose
- 如果你只是想把幾個常用的操作函數(shù)封裝為一個函數(shù)來復(fù)用代碼荷腊,則請使用 compose()
- Read more: http://blog.chengyunfeng.com/?p=987#ixzz4UqrCbki2
combineLastest
-
CombineLatest
操作符行為類似于zip
,但是只有當(dāng)原始的Observable中的每一個都發(fā)射了一條數(shù)據(jù)時zip
才發(fā)射數(shù)據(jù)急凰。CombineLatest
則在原始的Observable中任意一個發(fā)射了數(shù)據(jù)時發(fā)射一條數(shù)據(jù)女仰。當(dāng)原始Observables的任何一個發(fā)射了一條數(shù)據(jù)時,CombineLatest
使用一個函數(shù)結(jié)合它們最近發(fā)射的數(shù)據(jù)抡锈,然后發(fā)射這個函數(shù)的返回值疾忍。
doOnRequest
- 控制請求數(shù)量
- 參考:http://blog.chengyunfeng.com/?p=981
RxBinding
-
android 監(jiān)聽事件包裝
RxView.clicks
RxTextView.textChanges
RxAdapterView.itemClicks
?