android EventBus总结
EventBus定义:
EventBus是一个基于观察者模式的事件发布/订阅框架,开发者通过极少的代码去实现多个模块之间的通信,而不需要以层层传递接口的形式去单独构建通信桥梁。从而降低因多重回调导致的模块间强耦合,同时避免产生大量内部类。拥有使用方便,性能高,接入成本低,支持多线程的优点。
如何实现Eventbus
1.定义事件(事件是POJO(plain old java object)类型,不需要什么特别的需求)
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
2.准备订阅者(订阅者实现事件处理方法(也叫做订阅者方法),这个方法会在事件提交的时候被调用。这些是使用@Subscribe注解定义的。请注意EventBus 3的方法名字可以自由选择(不像EventBus 2中约束的那样)。)
// 当一个Message Event提交的时候这个方法会被调用
@Subscribe
public void onMessageEvent(MessageEvent event){
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
// 当一个SomeOtherEvent被提交的时候这个方法被调用。
@Subscribe
public void handleSomethingElse(SomeOtherEvent event){
doSomethingWith(event);
}
订阅者也需要在bus中注册和注销。只有在订阅者注册的时候,他们才会收到事件。在Android中,Activities和Fragments通常绑定他们的生命周期.
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
3.提交事件(在代码中任意位置提交事件。所有当前注册的匹配事件类型的订阅者都会收到事件。)
EventBus.getDefault().post(newMessageEvent("Hello everyone!"));