RxBus的使用

Rxjava目前已经很火了,如果你尚未了解,可以查看rxjava详情。RxBus并不是一个库,而是一种模式,用过EventBus的都知道采用了观察者模式。如果我们在使用rxjava了,并且减少库的依赖,那么我们可以用RxBus去代替EventBus。

一、添加RxJava和RxAndroid的依赖:

          compile’io.reactivex:rxandroid:1.1.0

          ‘compile’io.reactivex:rxjava:1.1.0’

二、新建RxBus类:

《RxBus的使用》 rxbus类

1、Subject同时充当了Observer和Observable的角色,Subject是非线程安全的,要避免该问题,需要将 Subject转换为一个SerializedSubject,上述RxBus类中把线程非安全的PublishSubject包装成线程安全的Subject。

2、PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。

3、ofType操作符只发射指定类型的数据,其内部就是filter+cast

三、创建你需要发送的事件类:

这里自己定义了一个事件类。

《RxBus的使用》 事件处理类

四、发送事件:

这里我是在一个RxBusActivity的一个onCreate()方法中添加了一个按钮,点击该按钮后,发送事件。

《RxBus的使用》 发送事件

五、接收事件:

这里我们在另外一个MainActivity接收事件。在MainActivity定义了一个TextView用于显示数据。

《RxBus的使用》 接收事件

注:rxSbscription是Sbscription的对象,我们这里把RxBus.getInstance().toObserverable(StudentEvent.class)赋值给rxSbscription以方便生命周期结束时取消订阅事件

六、取消订阅。

在这里一定要取消订阅,否认容易造成内存泄漏问题。

《RxBus的使用》 取消订阅

菜鸟一枚:如有不对还望指导。参考:rxbus使用

    原文作者:圈圈猫
    原文地址: https://www.jianshu.com/p/58c8e57a03e3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞