- 添加依赖implementation 'org.greenrobot:eventbus:3.1.1'
1. 注册
- 注册事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
}
- 解除注册
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
2. 事件
- 发送事件
EventBus.getDefault().post("发送事件");
- 处理事件
//权限修饰符必须为public
@Subscribe(threadMode = ThreadMode.MAIN)
public void XXX(MessageEvent messageEvent) {
...
}
3. 粘性事件
- 粘性事件的发布:
EventBus.getDefault().postSticky("粘性事件");
- 粘性事件的接收
//权限修饰符必须为public
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void receiveSoundRecongnizedmsg(String insType) {
}
4. 总结
EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。