EventBus是什么
Android组件间通信。Handler和广播也可以通信,但是Eventbus更加简便
导入包
implementation 'org.greenrobot:eventbus:3.2.0'
使用
1. 声明消息传递结构体,不同业务应该用不同的结构体,最好写个基类管理
public static class MessageEvent {}
2. 声明订阅者,也就是消息接收者需要写这个方法
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {};
3. 注册和回收订阅者,这里注意要判断是否已注册,不然会报错
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(!EventBus.getDefault().isRegistered(this)){//加上判断 EventBus.getDefault().register(this); } } @Override protected void onDestroy() { if (EventBus.getDefault().isRegistered(this))//加上判断 EventBus.getDefault().unregister(this); super.onDestroy(); }
4. 在任意地方发送消息
EventBus.getDefault().post(new MessageEvent());