RxJava有多火?看看Github上star数量就知道了,那什么是RxJava呢?
RxJava 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。
换一种说法,RxJava 是一个响应式编程框架,采用观察者设计模式。所以自然少不了 Observable 和 Subscriber 这两个东东了。
而针对Android,则有一个基于RxJava的RxAndroid
甚至Jake Wharton大神还基于RxJava写了一个针对Android平台的binding apiRxBinding
而这篇博文讲的就是基于RxJava实现的一个Event Bus->RxBus
懂得Android的开发者都知道,目前Android上最火的两个Event Bus库是Otto和Green Robot’sEventBus,两个事件总线库写的都非常不错。不过这里不是讲事件总线,而是讲如何通过RxJava来实现事件总线的效果。
总体来说,代码非常的简单,十几行代码就搞定了!
首先,我们来定义一个RxBus单例类:
1
|
import rx.Observable;
|
代码非常的简单,使用呢?则更简单了,一般来讲,事件总线,包括一个发送事件和多个接收事件。
先看发送事件的代码:
1
|
RxBus.getDefault().send(new TapEvent());
|
而在你想接收事件的地方,只需要加上下面代码就可以了:
1
|
RxBus.getDefault().toObservable().subscribe(new Action1<Object>() {
|
这样,一个简单的Event Bus就实现了!如果你的项目已经开始使用RxJava,建议可以把Otto和Green Robot’sEventBus去掉了,直接使用RxBus!!
当然,不要忘了在build.gradle引入RxJava和RxAndroid:
compile 'io.reactivex:rxandroid:1.0.1'
compile 'io.reactivex:rxjava:1.0.14'