Android架构 22.第三方开源库 EventBus - 源码分析和手写

1. 源码分析

 

现象描述:

2.1. MainActivity里面注册 EventBus.register(this) 

2.2. MainActivity里面解绑 EventBus.unRegister(this) 

2.3. 把需要接收的方法采用注解Subscribe

2.4.在任意的地方只要调用 EventBus.post就会执行 Subscribe的注解方法,前提是同类型的对象

 

自己去写的时候会怎么去实现?EventBus怎么实现。

 

第一步:

findSubscriberMethods()

去解析注册者对象的所有方法,并且找出带有注解 Subscribe 注解的的方法,

然后通过Annotation解析所有细节参数(threadMode,priority,sticky,eventType,method),

把这些参数封装成一个 SubscriberMethod,添加到集合返回。

 

第二步:

subscribe()

解析所有 SubscriberMethod的eventType,然后按照要求解析成 

Map<Class<?>, CopyOnWriteArrayList<Subscription>> subscriptionsByEventType

的格式,key 是 eventType,value就是 Subscription 的列表,Subscription包含两个属性subscriber,SubscriberMethod

 

第三步:

post()

遍历 subscriptionsByEventType,找到符合的方法调用方法的 method.invoke() 执行。

 

第四部:

unregister()

移除

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章