EventBus源码解析(二):Register

EventBus源码解析(一):概述
EventBus源码解析(二):Register
EventBus源码解析(三):Post/PostSticky
EventBus源码解析(四):优化-EventBusIndex

EventBus源码解析(二):Register_第1张图片
注册流程
EventBus源码解析(二):Register_第2张图片
查找观察者里面的所有回调方法

从EventBus.getDefault().register(this)开始

  1. SubscriberMethodFinder负责从订阅者里面找出带Subscribe注解的方法,里面有一个METHOD_CACHE缓存注解的方法,下次同一个对象订阅就不会重复查找了
  2. 如果使用了EventBusIndex(通过APT生成一个已经分好类的方法),SubscriberMethodFinder会优先从subscriberInfoIndexes里面找,不然通过反射查找回调方法,然后同步到METHOD_CACHE
  3. 找到对应的方法后用FindState分解成SubscriberMethod。每一个SubscriberMethod会放到subscriptionsByEventType.put(eventType, subscriptions),这里会根据SubscriberMethod的priority排序,后面发布消息的时候就会按优先级来处理数据。
  4. 如果方法带有sticky属性,则从Map, Object> stickyEvents找到上一次发布过的事件分发给这个方法

你可能感兴趣的:(EventBus源码解析(二):Register)