EventBus源碼解析(一):概述
EventBus源碼解析(二):Register
EventBus源碼解析(三):Post/PostSticky
EventBus源碼解析(四):優(yōu)化-EventBusIndex
通過post或者postSticky發(fā)布事件卿樱,如果postSticky則會(huì)把事件放到stickyEvents里面,后面注冊(cè)的對(duì)象如果有sticky方法會(huì)從這里拿苔严。
- 事件會(huì)被放到對(duì)應(yīng)線程的PostingThreadState里面的eventQueue里面虫给,如果PostingThreadState之前沒在消費(fèi)事件愉择,則調(diào)用PostingThreadState開始消費(fèi)事件蝇摸。
- 如果設(shè)置支持事件父類也能監(jiān)聽到這個(gè)事件宿刮,則找到所有的事件列表
- 逐一發(fā)送事件是辕,根據(jù)事件類型從subscriptionsByEventType找到所有的監(jiān)聽者Subscription
- 根據(jù)Subscription里面的響應(yīng)線程分發(fā)事件
總體看來,Eventbus的原理還是很簡單的