主要角色包含四部分:
- EventBus 资源管理类,大部分资源和操作都在该类实现
- Subscriber 订阅者,订阅Event的类
- SubscriberRegistry 订阅者队列,根据不同Event存储订阅者(Map<Event,Subscriber集合>)
- Dispatcher 事件分发器,执行Event分发
主要方法:
注册 EventBus.getDefault().register(this);
调用此方法EventBus会拿到当前类所有的注解方法,SubscriberRegistry遍历方法集合,根据Event将当前订阅者存储起来
注销 EventBus.getDefault().unregister(this);
将 当前订阅者从订阅者队列中移除
发送事件 EventBus.getDefault().post("1");
根据当前发送的Event从订阅者队列中找到订阅者们逐一执行事件
发送粘性事件 EventBus.getDefault().postSticky("2");
将当前Event存储到单独的StickyEvent队列中,当订阅者执行register方法时会在当前队列中找的需要执行的Event进行post