一、EventBus简介
1. EventBus的作用
是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册核心代码
EventBus.getDefault().register(this);
}
3.解注册
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
4.构造发送消息类
public class MessageEvent {
public String name;
public String password;
public MessageEvent(String name, String password) {
this.name = name;
this.password = password;
}
}
5.发布消息
EventBus.getDefault().post(new MessageEvent("test","abc"));
发布
6.接收消息
接收消息有四种方式,如下;
代码如下;
@Subscribe(threadMode = ThreadMode.MAIN)
public void messageEventBus(MessageEvent event){
tv_result.setText("name:"+event.name+" passwrod:"+event.password);
}
三.粘性EventBus
1.什么是粘性事件?
之前说的使用方法, 都是需要先注册(register), 再post,才能接受到事件;
如果你使用postSticky发送事件, 那么可以不需要先注册, 也能接受到事件。
2.粘性EventBus的使用步骤
1)构造发送信息类
public class StickyEvent {
public String msg;
public StickyEvent(String msg) {
this.msg = msg;
}
}
2)发布消息
EventBus.getDefault().postSticky(new StickyEvent("test"));
3)接收消息
//注意,和普通的EventBus的方法一样,区别在于粘性的多了一个 sticky = true 的属性.
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEvent(StickyEvent event){
tv_c_result.setText(event.msg);
}
4)注册
EventBus.getDefault().register(XActivity.this);
5)解注册
EventBus.getDefault().removeAllStickyEvents();
EventBus.getDefault().unregister(XActivity.class);
看到此,是不是接的EventBus的简单使用是不是很简单,谢谢浏览!