EventBus是使用Android的开放源码库发布/订阅为松耦合模式。EventBus使得脱钩类与代码,只需几行中央通讯-简化了代码,消除依赖关系,并加快应用开发。
post
使用你的好处EventBus:这...
- 简化组件之间的通讯
- 解耦事件发送者和接收者
- 与活动,片断,和后台线程表现良好
- 避免了复杂且容易出错的依赖关系和生命周期问题
- 快; 专为高性能而优化
- 很小(<50K JAR)
- 是在实践中被证实与应用程序安装100,000,000+
- 拥有先进的功能,如交付线程,用户优先级等。
添加:性能
第1步:定义事件
事件是POJO(简单Java对象)没有任何特殊要求。优化
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
}
2.Prepare subscribers(准备订阅)this
// This method will be called when a MessageEvent is posted (in the UI thread for Toast)
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
// This method will be called when a SomeOtherEvent is posted
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
doSomethingWith(event);
}
//定义回调函数,至关于观察者模式中的on***Listener函数,在EventBus中能够定义四种类型的回调函数:spa
//onEvent 它和ThreadModel中的PostThread对应,这个也是默认的类型,当使用这种类型时,回调函数和发起事件的函数会在同一个线程中执行线程
//onEventMainThread,当使用这种类型时,回调函数会在主线程中执行,这个在Android中很是有用,由于在Android中禁止在子线程中修改UIcode
//onEventBackgroundThread,当使用这种类型时,若是事件发起函数在主线程中执行,那么回调函数另启动一个子线程,若是事件发起函数在子线程执行,那么回调函数就在这个子线程执行。
//onEventBusAsync,当使用这种类型时,无论事件发起函数在哪里执行,都会另起一个线程去执行回调。
3.注册事件 反注册事件
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
4.发送事件
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));