您的位置:首页 > 其它

EventBus事件总线——优雅地替换Handler

2016-03-31 20:45 246 查看
http://blog.csdn.net/harvic880925/article/details/40787203
http://bbs.itcast.cn/thread-83609-1-1.html
什么是EventBus

EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。

下载EventBus

1.
下载EventBus库:

库地址:https://github.com/greenrobot/EventBus/releases

源码地址:https://github.com/greenrobot/EventBus

2.
将下载好的EventBus-2.4.0.jar放入libs即可

如何使用EventBus

1. 定义事件, 定义一个类,继承默认的Object即可,用于区分事件和传输数据。 本例为MsgEvent1和MsgEvent2

2. 添加订阅者:EventBus.getDefault().register(this);
将所在类作为订阅者,框架会通过反射机制获取所有方法及其参数。

订阅者所在类可以定义以下一个或多个方法用以接收事件:

public void onEvent(MsgEvent1
msg)

public void onEventMainThread(MsgEvent1
msg)

public void onEventBackgroundThread(MsgEvent1
msg)

public void onEventAsync(MsgEvent1
msg)

3. 发布者发布事件:EventBus.getDefault().post(new MsgEvent1("主线程发的消息1"));

一旦执行了此方法, 所有订阅者都会执行第二步定义的方法。

4.
取消订阅:EventBus.getDefault().unregister(this);
当订阅者不再被使用,或者被关闭时,最好进行取消订阅,不再接受事件消息。

5.
注意事项:发布者post方法参数是Object类型,也就是可以发布任何事件。订阅者接受消息时,只要定义的是第二步四个方法任意一个,并且参数和发布者发布的一致,即可被执行。发布者也可以通过第二步接收消息,订阅者也可以作为发布者发消息给自己。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: