EventBus原始碼解析01 獲取例項

2021-08-04 11:32:27 字數 770 閱讀 8293

通常,我們會通過getdefault()來獲取eventbus的例項。

eventbus.getdefault()
我們來檢視他內部的實現。

public static eventbus getdefault() }}

return defaultinstance;

}

可以看到,這是個雙重校驗鎖的單例模式,說明通過getdefault()獲取的eventbus物件是個單例項。

這裡再來看下eventbus的構造方法

eventbus(eventbusbuilder builder)
這裡引數傳入了eventbusbuilder物件,很明顯,構造方法中會根據eventbusbuilder進行一些變數的初始化。根據builder這個命名,我們可以猜想到這是個建造者模式。

如果我們需要自定義eventbus,完全可以使用建造者模式構建乙個。不過,一般情況下,使用getdefault()完全就足夠使用了。

eventbus eventbus = eventbus.builder()

.eventinheritance(false)

.sendnosubscriberevent(true)

.skipmethodverificationfor(mainactivity.class)

.build();

EventBus原始碼解析(二)

那麼我們就馬上進入主題吧,上篇文章分析到boolean sticky這個引數和registersticky object subscriber 這個方法,這個方法與之前我們註冊的方法是不是很像啊?public void register object subscriber public void r...

EventBus原始碼解析二

上次分析了 註冊 這次分析下 事件傳送 eventbus.getdefault post new anyeventtype setresult aaa public void post object event try finally eventqueue.add event 新增到事件佇列中,然後...

EventBus3 0原始碼解析

eventbus的註冊 eventbus.getdefault register this 那麼我們來看一下eventbus.getdefault 到底做了一下什麼操作 public static eventbus getdefault return defaultinstance 就是拿到了eve...