EventBus很早就已经流行并使用了,但是由于种种原因一直没踩坑。
EventBus是针对Android的发布/订阅事件总线。
EventBus3.0是当前最新的版本,它与之前版本相比较,加入了注解使代码更加简洁,使用更加方便。
主要功能:
在Activity,Fragment和线程之间传递消息。
优点:
1、简化了组件之间的通讯(解耦了发送者和接受者,避免了复杂和容易出错的依赖和生命周期问题)
2、使代码更加简洁优雅;
3、体积小;
4、拥有线程交付和用户优先级等功能;
踩坑
1、直接定义的接受粘性事件方法会在onCreate方法前执行;
2、接受数据类型时,必须使用对象,int.class不能接受到数据类型是Integer的消息;
简单使用
发送普通事件
EventBus.getDefault().post("Main1");
接受普通事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void setValue(String val) {
tvValue.setText(val);
}
EventBus.getDefault().postSticky(123);
接受粘性事件,方法调用接受和注解
EventBus.getDefault().removeStickyEvent(Integer.class)
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void setValueStrick(Integer val) {
Log.i(TAG, "Strick:" + val);
}
源码