EventBus事件处理总线
2018-01-30 18:16
295 查看
写在前头
EventBus 是一个事件处理总线,可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。它比广播的使用更为简便,且广播的效率并不高。EventBus的优势
简化了组件间的通讯分离了事件的发送者和接受者
在Activity、Fragment和线程中表现良好
避免了复杂的和易错的依赖关系和生命周期问题
使得代码更简洁,性能更好
Eventbus接受消息的四种ThreadMode
POSTING(默认方式) 该方式会使处理消息的函数在与发送消息相同的线程执行,如果发送消息在主线程中,这消息的接收也会在主线程中,如果发送消息在子线程中,这消息的接收也会在子线程中。Main 消息的接收在主线程中被执行(应避免耗时操作)。
BACKGROUND 如果发送消息在主线程中则开辟一个新的线程来执行,否则直接在发送消息的子线程中执行。
ASYNC 直接开辟一个新的线程来执行消息的接收(该方法不可以操作UI更新)。
Eventbus使用详解
一、普通事件处理(非粘性事件)
(1)添加依赖
compile 'org.greenrobot:eventbus:3.0.0'
(2)在需要订阅的类中注册EventBus
//注册EventBusEventBus.getDefault().register(this);
(3)创建一个消息类(用于传递)
public class MyEvent { private String msg; public MyEvent(String msg) { this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
(4)发送消息
//发送消息 EventBus.getDefault().post(new MyEvent("从SecondActivity回传消息到MainActivity"));
(5)在订阅类中接收消息
@Subscribe(threadMode = ThreadMode.MAIN)public void onEventMainThread(MyEvent event)
{
mTextView.setText(event.getMsg());
}
(6)使用完毕或者生命周期结束时解绑EventBus
//取消绑定 EventBus.getDefault().unregister(this);
二、粘性事件处理
粘性事件:即消息已经发送以后再订阅,依然可以收到消息。(默认状态为非粘性事件)我们只需要对之前的接受消息代码稍作修改即可@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)//设置sticky为true就可以处理粘性事件了 public void onEventMainThread(MyEvent event) { mTextView.setText(event.getMsg()); }
粘性事件的发送方法EventBus.getDefault().postSticky(new MyEvent("测试"));
效果展示
(1)第一个aictivity跳转到第二个activity
(2)在第二个activity发送消息
(3)在第一个activity中接收到了第二个activity回传的消息
相关文章推荐
- Android事件总线——EventBus的使用
- EventBus 事件总线之我的理解
- 发布 / 订阅的事件总线(eventBus)
- AndroidEventBus,android事件总线框架
- AndroidEventBus新特性:添加粘性事件、不需要手动注销事件总线
- EventBus,一个可以在Activity、Fragment、Service之间传递任意类型数据的事件总线框架
- EventBus事件总线组件:事件通知功能之事件注册
- 【转】事件总线eventbus的设计
- EventBus事件总线学习
- Eventbus 事件总线
- EventBus事件总线,eventvus的使用
- EventBus 事件总线
- [Android] EventBus事件总线
- Android学习系列(43)--使用事件总线框架EventBus和Otto
- Android应用开发—eventBus发布事件和事件处理的时序关系
- Guava - EventBus(事件总线)
- 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity
- Rx实现事件总线(类似于EventBus)总结
- Android事件总线 ( AndroidEventBus ) 开源库发布
- Eventbus的使用与深入-- 一个好用的开源的事件订阅与发布总线,解放你的handler