Rxjava2升级注意事项及适配技巧

本文详细介绍了RxJava2的变化,包括包名、禁止null、新增Flowable、Observer与Subscriber调整、Disposable的引入等。同时,针对RxJava2不再允许null值的问题,提出了创建NullCheckUtil工具类的适配技巧,包括处理单一实体和列表型实体的NPE问题,简化了从RxJava1升级到RxJava2的过渡。
摘要由CSDN通过智能技术生成

RxJava2变化

RxJava2(下面统称为rx2)按照Reactive-Streams specification规范进行了重写,因而与RxJava1(下面统称为rx1)相比有了不少的变化。

  1. 引用包名不同
    import时的包名由rx.*变成了io.reactive.*

  2. 禁止接受null
    在rx1中,Observable可以发射任何类型的值,包括null,因此我们不用当心null的问题,即使是像这样使用也不会有任何问题:Observable.just(null), 但在rx2中不再允许发射null,否则会抛出了NullPointerException,因此在使用rx2时就必须先做好null值的判断,避免NPE。

  3. Observable与Flowable
    在rx1中,比较让人诟病的就是背压问题,rx1部分支持背压,而且不能很好的处理背压问题(即被观察者发射速度太快(例如一些UI事件)以至于它的操作符或订阅者不能及时处理相关消息,进而抛出MissingBackpressureException),因而需要开发者自己控制上流的发射速度或者在下游做好限制处理。不过大部分时候,我们都不需要考虑背压问题,因此,rx2便增加了一个新的被观察者Flowable, Flowable的主要特点便是支持背压,而原先的Observable便更改为不再支持背压了,因此我们便可以根据自己的需求来选择合适的被观察者。

  4. Observer与Suscriber
    与Observable与Flowable对应,它两的订阅者分别是Observer与Suscriber, 即 Observable.subscribe(Observer)Flowable.subscribe(Subscriber) 。因而,Observable在create时不再Subscriber参数,而是一个ObservableEmitter, 即

    Observable.create(new ObservableOnSubscribe<Integer>() {
     @Override
     public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
    
    }
    }) 

    遵循reactive-streams,取消了原先的Suscriber,改用reactive-streams的Suscriber,同时Observer与之保持一致,因此rx2的Observer和Suscriber与rx1的有点不同,即 onNext, onError, onComplete 依然存在着,但 onStart 便不存在了,不过新的 onSubscribe 方法其实也可以替代原先的 onStart ,若依然想用 onStart ,rx2也有提供几个实现Suscriber接口又包含该方法的抽象类:DefaultSubscriberResourceSubscriberDisposableSubscriber

  5. Disposable
    在rx2中,由于引入了reac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值