常用操作符
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