1、引入
compile 'org.greenrobot:eventbus:3.0.0'
2、定义事件实体类
public class EventMsg {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
3、注册事件和释放事件
EventBus.getDefault().register(this); // 订阅
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this); // 解除订阅
}
4、订阅事件处理
@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
public void onDataSynEvent(EventMsg event) {
tvShowMsg.setText(event.getMsg());
}
5、发送消息
EventMsg msg = new EventMsg();
msg.setMsg("hello eventBus");
EventBus.getDefault().post(msg);
6、订阅事件的优先级
@Subscribe(threadMode = ThreadMode.MAIN,priority = 100) //在ui线程执行 优先级100
public void onDataSynEvent(EventMsg event) {
Log.e(TAG, "event---->" + event.getCount());
}
7、终止事件往下传递
EventBus.getDefault().cancelEventDelivery(event) ;//优先级高的订阅者可以终止事件往下传递
8、总结
以上是EventBus的最简单实用方法,3、4点代码一般放在同一个activity中,起到注册监听的作用,5点放在另一个activity中,主要用来发送事件。
接下来将从源码的角度来分析 getDefault() –>register()–>post()–>unregister()这四个过程的具体实现。