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的使用_第1张图片
rxbus类

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

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

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

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

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

RxBus的使用_第2张图片
事件处理类

四、发送事件:

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

RxBus的使用_第3张图片
发送事件

五、接收事件:

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

RxBus的使用_第4张图片
接收事件

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

六、取消订阅。

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

RxBus的使用_第5张图片
取消订阅


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

你可能感兴趣的:(RxBus的使用)