rx.xxx 和 io.reactivex.xxx RxJava1 和 RxJava2 和 RxJava3

在使用RxJava想要创建一个Observable,导入包的时候发现

发现怎么这么多,我该选哪个?

上图  1位置的io.reactivex是代表了Rxjava2里面的Observable;

   2位置的java.util是java自带的Observable;

   3位置的rx是RxJava1里面的Observable。

可是我项目里面我只依赖了RxJava2,为啥会有RxJava1呢?

那可能是你项目中使用的其他的库有用到RxJava1。

 所以 

 rx.xxx代表了RxJava1;

io.reactivex.xxx代表了RxJava2;

io.reactivex.rxjava3.xxx 代表了RxJava3.

 

描述RxJava 1.XRxJava 2.X
package包名rx.xxxio.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,但只会发射一个onSuccessonError按照Reactive Streams规范重新设计,遵循协议onSubscribe(onSuccess/onError)
Completable行为类似Observable,要么全部成功,要么就失败按照Reactive Streams规范重新设计,遵循协议onSubscribe (onComplete/onError)
Maybe2.X新增,行为类似Observable,可能会有一个数据或一个错误,也可能什么都没有。可以将其视为一种返回可空值的方法。这种方法如果不抛出异常的话,将总是会返回一些东西,但是返回值可能为空,也可能不为空。按照Reactive Streams规范设计,遵循协议onSubscribe (onSuccess/onError/onComplete)
Flowable2.X新增,行为类似Observable,按照Reactive Streams规范设计,支持背压Backpressure
SubjectAsyncSubject
BehaviorSubject
PublishSubject
ReplaySubject
UnicastSubject
2.X依然维护这些Subject现有的功能,并新增:
AsyncProcessor
BehaviorProcessor
PublishProcessor
ReplayProcessor
UnicastProcessor
支持背压Backpressure
SubscriberSubscriber由于与Reactive Streams的命名冲突,Subscriber已重命名为Disposable

RxJava3的改动点这里

背压是啥?

背压就是 如果被观察者发送数据的速度大于观察者处理数据的速度,会导致异常报错。 而让数据不是一股脑的全部推过来,根据处理数据的速度主动去拉数据的策略。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值