EventBus总结
需要下载源码的,只需要将EventBus中的源码复制下来即可
- 大致流程
- 懒加载的getDefault(),在注册的时候才初始化
- register(Object subscriber);//注册
- 将当前class中所有带有@Subscribe注解的方法全部缓存到eventbus中
- 缓存Map<class,List<Subscribe>>一个class对应它其中的所有@Subscribe注解的方法
- 将当前class中所有带有@Subscribe注解的方法全部缓存到eventbus中
- post(Object event);//发送
- 先将需要发送的event加入到队列,进行排队等待发送,避免出现大量并发
- 判断当前发送的event是否包含了继承关系
- 如果有继承关系,则需要每一层继承关系都进行发送
- 继承关系中逐级发送的不再是eventClass
- 如果没有,则只需要发送当前event对象
- 如果有继承关系,则需要每一层继承关系都进行发送
- 从缓存中取出所有订阅了eventClass的Subscription对象,遍历循环
- 判断Subscription对象所需要接收的线程环境
- 四种线程环境
- 依然在当前线程中接收
- 直接