RxJava2 目前已经在国外一些应用使用上,国内应用也有部分用于生产环境,是时候考虑切换到RxJava2。RxJava2主要是解决了Backpressure, 设计符合Reactive-Streams规范,以及其它一些更新。
RxJava 1.X升级RxJava 2.X部分变更
| 描述 | RxJava 1.X | RxJava 2.X |
|---|---|---|
package包名 | rx.xxx | io.reactivex.xxx |
| Reactive Streams规范 | 1.X早于Reactive Streams规范出现,仅部分支持规范 | 完全支持 |
| Backpressure 背压 | 对背压的支持不完善 | Observable设计为不支持背压新增 Flowable支持背压 |
null空值 | 支持 | 不再支持null值,传入null值会抛出 NullPointerException |
Schedulers线程调度器 | Schedulers.immediate()Schedulers.trampoline()Schedulers.computation()Schedulers.newThread()Schedulers.io()Schedulers.from(executor)AndroidSchedulers.mainThread() | 移除Schedulers.immediate()新增 Schedulers.single()其它未变 |
Single | 行为类似Observable,但只会发射一个onSuccess或onError | 按照Reactive Streams规范重新设计,遵循协议onSubscribe(onSuccess/onError) |
Completable | 行为类似Observable,要么全部成功,要么就失败 | 按照Reactive Streams规范重新设计,遵循协议onSubscribe (onComplete/onError) |
Maybe | 无 | 2.X新增,行为类似Observable,可能会有一个数据或一个错误,也可能什么都没有。可以将其视为一种返回可空值的方法。这种方法如果不抛出异常的话,将总是会返回一些东西,但是返回值可能为空,也可能不为空。按照Reactive Streams规范设计,遵循协议onSubscribe (onSuccess/onError/onComplete) |
Flowable | 无 | 2.X新增,行为类似Observable,按照Reactive Streams规范设计,支持背压Backpressure |
Subject | AsyncSubjectBehaviorSubjectPublishSubjectReplaySubjectUnicastSubject | 2.X依然维护这些Subject现有的功能,并新增:AsyncProcessorBehaviorProcessorPublishProcessorReplayProcessorUnicastProcessor支持背压 Backpressure |
Subscriber | Subscriber | 由于与Reactive Streams的命名冲突,Subscriber已重命名为Disposable |
不同于RxJava1.x,RxJava2.x中没有了一系列的Action/Func接口,取而代之的是与Java8命名类似的函数式接口,如下图:

参考链接
RxJava1.X升级到RxJava2.X笔记
RxJava2 vs RxJava1
RxJava2 浅析
RxJava2在国外已广泛应用,国内也逐步采纳。升级至RxJava2解决了Backpressure问题,全面支持ReactiveStreams规范,改进了线程调度器,并引入了Single、Completable、Maybe和Flowable等新特性。

1268

被折叠的 条评论
为什么被折叠?



