Rxjava 学习笔记

2021-07-08  本文已影响0人  KennGM

RxJava的另一个好处在于,我们可以清楚地看到数据是如何在一系列操作符之间进行转换的。
ReactiveX/RxJava文档中文版

可观察对象(Observables)


观察者(observers)


桥梁或者代理(Subject)


AsyncSubject

BehaviorSubject

PublishSubject

ReplaySubject

串行化

如果你把 Subject 当作一个 Subscriber 使用,注意不要从多个线程中调用它的onNext方法(包括其它的on系列方法),这可能导致同时(非顺序)调用,这会违反Observable协议,给Subject的结果增加了不确定性。

要避免此类问题,你可以将 Subject 转换为一个 SerializedSubject ,类似于这样:

mySafeSubject = new SerializedSubject( myUnsafeSubject );

调度器 (Scheduler)


RxJava示例

调度器的种类

下表展示了RxJava中可用的调度器种类:

调度器类型 效果
Schedulers.computation( ) 用于计算任务,如事件循环或和回调处理,不要用于IO操作(IO操作请使用Schedulers.io());默认线程数等于处理器的数量
Schedulers.from(executor) 使用指定的Executor作为调度器
Schedulers.immediate( ) 在当前线程立即开始执行任务
Schedulers.io( ) 用于IO密集型任务,如异步阻塞IO操作,这个调度器的线程池会根据需要增长;对于普通的计算任务,请使用 Schedulers.computation();
Schedulers.io( ) 默认是一个CachedThreadScheduler,很像一个有线程缓存的新线程调度器
Schedulers.newThread( ) 为每个任务创建一个新线程
Schedulers.trampoline( ) 当其它排队的任务完成后,在当前线程排队开始执行

操作符 (Operators)

Transformer

转换器

Observable/Flowable/Single/Completable/Maybe 对象转换成另一个Observable/Flowable/Single/Completable/Maybe 对象

  1. RxJava1.x 版本就有了Observable.Transformer、Single.Transformer和Completable.Transformer
  2. RxJava2.x版本中变成了ObservableTransformer、SingleTransformer、CompletableTransformer、FlowableTransformer和MaybeTransformer。其中,FlowableTransformer和MaybeTransformer是新增的。

compose

上一篇 下一篇

猜你喜欢

热点阅读