EventBus是一款针对Android优化的发布/订阅事件总线,简化组件(线程)之间及通信, 避免了复杂且容易出错的依赖关系和生命周期问题。其优点是开销小,代码更优雅,以及将发送者和接收者解耦。
/* Additional fields if needed */
}
EventBus.getDefault().register(this);
此时,应使用注解@Subscribe - 订阅消息事件,接收事件有四种模式等会介绍
发布消息
使用实例
添加依赖库(最新版本为3.0.0)
compile 'org.greenrobot:eventbus:3.0.0'
四部曲
声明事件,其实就是定义一个类,用来传递消息
public class MessageEvent {/* Additional fields if needed */
}
在接收界面注册EventBus,可在多处注册
EventBus.getDefault().register(this);
此时,应使用注解@Subscribe - 订阅消息事件,接收事件有四种模式等会介绍
@Subscribe
public void onEvent(MessageEvent event) {
/* Do something */
};
注:注册EventBus后,若不注解订阅消息,会报异常
org.greenrobot.eventbus.EventBusException: Subscriber class *** and its super classes have no public methods with the @Subscribe annotation
发布消息
EventBus.getDefault().post(event);
注销EventBus
EventBus.getDefault().unregister(this);
使用实例
老惯例,先看Gif效果图。