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...