前言
EventBus是一种用于Android的发布/订阅事件总线。它有很多优点:简化应用组件间的通信;解耦事件的发送者和接收者;避免复杂和容易出错的依赖和生命周期的问题;很快,专门为高性能优化过等等。
使用
Android Studio 3.0以上
implementation ‘org.greenrobot:eventbus:3.1.1’
第一步,定义事件。事件可以是任意普通的Java对象,没有任何特殊的要求。例如:
new String ("String对象") 或者 你可以新建一个 Bean类
public class MessageBean{
public String msg;
public MeassageBean(String s ){
msg =s;
}
public String getMsg(){
return msg;
}
}
第二,我们再结合EventBus 原理图:
发布者Publisher -> post
EventBus.getDefault().postSticky( Object object); //发送黏性事件
EventBus.getDefault().post(Object object); // 发送普通事件
然后事件经过Eventbus 处理 。
第三,订阅事件。订阅者需要定义事件处理方法(也称为订阅者方法)。当发布对应类型的事件时,该方法将被调用。EventBus 3使用@Subscribe注解来定义订阅者方法。方法名可以是任意合法的方法名,参数类型为订阅事件的类型。例如:
普通订阅
@Subscribe(threadMode = ThreadMode.MAIN)
publicvoidonMessageEvent(Object event) {
...
这里的 Object event 是对应你 发布者 post的类型
}
//黏性事件的 订阅
@Subscribe(threadMode = ThreadMode.MAIN, sticky= true)
publicvoidonMessageEvent(Object event) {
...
这里的 Object event 是对应你 发布者 post的类型
}...
第四,在你订阅的Activity 或者 Fragment 类里面 注册
// 注册订阅者
EventBus.getDefault().register(this);
//解除订阅
EventBus.getDefault().unregister(this);
以上你就完成了EventBus 的基本使用
(下次 更 还要记录一下 一个页面多个post 和怎么解除 粘性事件的订阅 )