RxBus是什么?
一个基于RxJava的事件总线,我们可以使用它来进行组件,模块之间的“复杂”通信,线程之间的数据传递,减少广播的使用和接口的回调。
为什么要使用?
代码量的精干简练
关于RxBus和EventBus的讨论
其实EventBus用起来还是很得心应手的,但是项目中都是用的RxJava,不用继续导入依赖,基本上可以达到相同的效果,何乐而不为。
Otto的主页上有这么一句话(作为竞争对手的肯定):
This project is deprecated in favor of RxJava and RxAndroid. These projects permit the same event-driven programming model as Otto, but they’re more capable and offer better control of threading.
If you’re looking for guidance on migrating from Otto to Rx, this post is a good start.
该项目已被RxJava和RxAndroid取代。Rx类项目允许与Otto类似的事件驱动编程模型,而且能力更强,操作线程更方便。
如果你正在寻找从Otto迁移到Rx的指导,这个帖子是个很好的开始。
怎么做到的呢?
其中最重要的部分要属Subject这个对象,我们来看看它为何方神物
震惊ing,竟然继承了被观察者,又实现了观察者。既能发送数据又能接受数据,简直不能再适合做事件传递者,但是在不同的线程中调用它会为造成顺序紊乱问题,给Subject的结果增加了不确定性。因此我们把Subject转化为了SerializedSubject
去解决。 接下来看代码:
这个时候你可能会问如果我在不同的组件中发生了不同的message那么怎么去区别他们呢?这个很简单我们,我们只需要修改toObserverable()方法,让他去分辨不同的message,让Subject转化成不同类型的Observable,然后分别处理就ok了。
具体使用
在指定的位置订阅关系去接收数据
|
|
在指定的位置发送数据
|
|
重要的事情说一遍“必须先有订阅的产生再有事件的发送,可以是任何地方,但是顺序不能颠倒”
小小的结合了一下RxBinding,有没有很优美~以上就是最基本的使用方法,下一篇文章将会写如何解决RxJava中的内存泄漏问题。see you~
若你觉得我的文章对你有帮助,请添加我为好友
扫描二维码,分享此文章