本例子基於eventbus2.4.0的原始碼,全部筆記都以的方式呈現,因為在部落格上貼上**,實在難看。
1.閱讀原始碼時使用的例子,包名是com.subuju.eventbus;
2.進入eventbus.getdefault()
4.繼續看另乙個過載的構造方法
5.好了,**執行到這裡,就完成了eventbus的例項化,接下來就可以看看它的register(this)方法了
接上圖:
接上圖:
接上圖:
接上圖:
接上圖:
8.下面我們回到第六步「6.register(object subscriber)」方法裡
9.接著進去subscribe(subscriber, subscribermethod, sticky,priority);
接上圖:
接上圖:
接上圖:
10 至此我們已經完成了eventbus.getdefault().register(this)執行邏輯的分析,我們可以總結出如下結論:
eventbus通過反射拿到我們在類中定義的接收事件的處理方法 通過該方法拿到我們的自定義事件型別 最後把我們註冊eventbus的類和自定義的事件型別關聯起來
當我們呼叫eventbus.getdefault().post(new myevent())時,eventbus可能也是通過反射拿到我們傳送的事件型別(本例中就是myevent),然後再到乙個hashmap中(就是上面我們分析原始碼時,mainactivity和myevent關聯起來的那個hashmap),拿到註冊的那個類(本例中就是mainactivity),最後通過mainactivity得到事件處理的方法,執行之!!!
EventBus分析原始碼
public static eventbus getdefault return defaultinstance 這裡是註冊訂閱者的地方,同樣的註冊方式有這麼 它們之間最主要的區別就是引數的不同。在實現上它們都是呼叫void register object subscriber,boolean st...
EventBus原始碼分析
前言 eventbus在現如今android專案中用來進行通訊使用很廣泛。在本篇文章中,我將會分為下面幾個模組來講解eventbus 如何使用,原始碼分析,使用注意事項,高階技能。除了上面說的幾個exception,如果我們重複呼叫register的話,會出現throw new eventbu ce...
閱讀筆記 fsnotify原始碼閱讀
fsnotify的github位址是 fsnotify是乙個資料夾監控應用。可以使用建立乙個watcher來對某個資料夾進行監控 檔案目錄很簡單,實際就兩個程式檔案,fsnotify.go 和 各平台的fsnotify go 後乙個檔案是各個不同平台的實現 example test.go中給的是最簡...