整體架構(gòu)
image.png
一言以蔽之穿铆,觀察者+反射
當(dāng)調(diào)用EventBus.getInstance().register(Object)的時候趁仙,把Object注冊到一個容器里
當(dāng)調(diào)用EventBus.getInstance().postEvent(Event),然后找到接受對應(yīng)Event的對象和方法先匪,然后反射執(zhí)行對應(yīng)方法(method.invoke(Object))
register流程
image.png
post流程
image.png
unregister流程
image.png
索引
運行時注解性能不佳钓辆,編譯時注解掃描方法,保存起來
供運行時調(diào)用
粘性事件
其實不難待牵,緩存粘性事件,然后在register的時候喇勋,檢查這些粘性事件即可缨该,有沒有要發(fā)給自己的
用得比較少,目前在我們項目中還未發(fā)現(xiàn)用的場景
而且使用粘性事件個人覺得不可控茄蚯,建議少用或者不用压彭,用其他手段滿足自己的需求
后記
有什么寫得錯誤、讓人費解或遺漏的地方渗常,希望可以不吝賜教壮不,我會馬上更改