EventBus上車指南

2021-07-23 08:44:51 字數 1175 閱讀 5898

eventbus是針對安卓優化的 發布/訂閱事件匯流排

主要功能是替代intent,handler,broadcast在fragment,activity,service,執行緒之間傳遞訊息.優點是開銷小,**更優雅。以及將傳送者和接收者解耦。

1.同一元件內傳送和接收事件(activity中)

2.事件傳遞自定義的物件(自定義類person)

3.在不同的元件之間傳送和接收事件(兩個activity中)當遇到新開源庫時,我們不僅需要了解使用它,更需要的是去弄懂他的內部機制,無論是面試還是工作都會受益匪淺。

getdefault原始碼

public

static eventbus getdefault() }}

return defaultinstance;

}

如上圖** 用到了單鎖雙檢查的單例模式

構造方法

private

final map, copyonwritearraylist> subscriptionsbyeventtype;//copyonwritearraylist執行緒安全的容器

private

final map>> typesbysubscriber;

private

final map, object> stickyevents;

public

eventbus()

eventbus(eventbusbuilder builder)

可以發現 構造方法是開源的,在eventbus中我們可以建立自己的eventbus例項,而單例模式得到是自帶已經存在的例項

成員分析:

subscriptionsbyeventtype:以event(即事件類)為key,以訂閱列表(subscription)為value

事件傳送之後,找到訂閱列表裡的訂閱者,分發事件

typesbysubscriber:以訂閱者類為key,以event事件類為value,在進行register或unregister操作的時候,會操作這個map。

stickyevents:儲存的是粘性事件

然後在構造方法中構造了3個poster用來處理粘性事件,這裡又使用到了設計模式建造者模式

ReactHook快速上車

react16.8開始內建了10個hook,核心是2個 usestate 有狀態元件寫法 class example extends react.component render times this.setstate click me 無狀態元件寫法 const example props pro...

上車人數(遞迴 遞推)

公共汽車從始發站 稱為第1站 開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上 下車,但上 下車的人數相同,因此在第2站開出時 即在到達第3站之前 車上的人數保持為a人。從第3站起 包括第3站 上 下車的人數有一定的規律 上車的人數都是前兩站上車人數之和,而下車人數等於上一站上車人數,一...

EventBus基本理解

eventbus是乙個android端優化的publish subscribe訊息匯流排,簡化了應用程式內各元件間 元件與後台執行緒間的通訊。比如請求網路,等網路返回時通過handler或broadcast通知ui,兩個fragment之間需要通過listener通訊,這些需求都可以通過eventb...