Eventbus
(观察者设计模式)
使用步骤
1、EventBus.getDafault().regesit 注册就是一个单例模式
2、创建方法来接收而处理事件
必须添加@Subscribe 必须加,不然报错或收不到消息
3、在OnDestory()中取消注册
4、发送消息
EventBus.getDafault().post();
使用场景;
线程间通信代替handler
组件间通信代替intent
优势:
简化组件间的通讯,分离事件的发送者和接收者
在Activity和Fragment和线程通信较好
eventbus的底层实现:
采用的是注解和反射来获取订阅方法信息(首先使用注解,注解获取不到再用反射)
当前订阅者是添加到总的事件订阅者的subscriptionByEventType集合中
这个集合是一个Map集合 key值就是eventType,也就是订阅方法中的参数