1、接收者(读者)订阅 只需要一次
EventBus.getDefault().register(this);
接收者销毁时候,要取消订阅,否则会内存泄漏
//判断是否订阅过消息
boolean registered = EventBus.getDefault().isRegistered(this);
if (registered) {
//取消订阅,防止内存泄漏
EventBus.getDefault().unregister(this);
}
//订阅方法
/**
* 声明一个接收消息的方法
* 1、必须是public void ,方法名称任意,参数只能有一个,而且最好使用javaBean作为参数
* 2、必须添加注解 @Subscribe(threadMode = ThreadMode.POSTING,sticky = true)
* 1、threadMode = ThreadMode.BACKGROUND 后台线程,可以执行耗时操作
* ThreadMode.POSTING 发送者所在的线程
* ThreadMode.MAIN 主线程,可以更新UI
* 2、sticky = true 粘性事件
* false 普通事件
*/
2、被订阅者(杂志社)发送
在任意的地方,都可以发生消息
EventBus.getDefault().post(new Event());//发送普通消息 (不传值) new Event() 是全写
EventBus.getDefault().postSticky(new Event());//发送粘性消息
3、什么情况下用?
两个类之间的传值等情况,可以使用