Rxjava目前已经很火了,如果你尚未了解,可以查看rxjava详情。RxBus并不是一个库,而是一种模式,用过EventBus的都知道采用了观察者模式。如果我们在使用rxjava了,并且减少库的依赖,那么我们可以用RxBus去代替EventBus。
一、添加RxJava和RxAndroid的依赖:
compile'io.reactivex:rxandroid:1.1.0
'compile'io.reactivex:rxjava:1.1.0'
二、新建RxBus类:
1、Subject同时充当了Observer和Observable的角色,Subject是非线程安全的,要避免该问题,需要将 Subject转换为一个SerializedSubject,上述RxBus类中把线程非安全的PublishSubject包装成线程安全的Subject。
2、PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。
3、ofType操作符只发射指定类型的数据,其内部就是filter+cast
三、创建你需要发送的事件类:
这里自己定义了一个事件类。
四、发送事件:
这里我是在一个RxBusActivity的一个onCreate()方法中添加了一个按钮,点击该按钮后,发送事件。
五、接收事件:
这里我们在另外一个MainActivity接收事件。在MainActivity定义了一个TextView用于显示数据。
注:rxSbscription是Sbscription的对象,我们这里把RxBus.getInstance().toObserverable(StudentEvent.class)赋值给rxSbscription以方便生命周期结束时取消订阅事件
六、取消订阅。
在这里一定要取消订阅,否认容易造成内存泄漏问题。
菜鸟一枚:如有不对还望指导。参考:rxbus使用