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()

移除

 

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