EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。
主要功能 替代Intent,Handler,BroadCast在线程之间的信息传递。
EventBus 三要素
1 Event 事件,可以是任意类型的对象
2 Subscriber 事件订阅者
OnEvent
OnEventMAINThread
OnEvenBackgroundThread
OnEventAsync
这代表四个线程模型,3.0之后方法名可以随意但是要加上注解并指定线程模型
@Subscriber
3 Publisher 事件发布者 可以在任意发送事件,直接调用post()方法即可
自定义一个类
你的这个类可以进行你想要进行的操作
例如
public class MessageEvent{
private String message;
public MessageEvent(String message){
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
然后写注册与解除绑定
要对应onCreate()<-->onDestroy() onResume<-->onPause() onStart()<-->onSto()
@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);
}
发送事件
EventBus.getDefault().post(messageEvent);
处理事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void XXX(MessageEvent messageEvent) {
...
}