EventBus源码解析(二):Register

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

注册流程
查找观察者里面的所有回调方法

从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<Class<?>, Object> stickyEvents找到上一次发布过的事件分发给这个方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。