EventBus粘性事件

2021-09-10 09:33:20 字數 895 閱讀 2645

普通事件都是在訂閱後才可以接收到事件,如果事件的傳送在訂閱事件之前,則收不到事件。而粘性事件指的是在傳送事件之後再訂閱該事件也能收到該事件。

// 儲存粘性事件的map

private

final map?>

, object> stickyevents;

// 傳送粘性事件

public

void

poststicky

(object event)

// should be posted after it is putted, in case the subscriber wants to remove immediately

// 傳送事件

post

(event)

;}

傳送粘性事件,除了將事件放入stickyevents中外,與普通事件處理一致,都使用post方法傳送事件。post方法的分析可以看eventbus原始碼解析這篇文章。

private

void

subscribe

(object subscriber, subscribermethod subscribermethod)}}

else}}

private

void

checkpoststickyeventtosubscription

(subscription newsubscription, object stickyevent)

}

可以看到粘性事件相對於普通事件是多了乙個map來儲存事件,在subscribe方法被呼叫時,就會去執行訂閱方法。需要注意一點是粘性事件需要自己去呼叫removestickyevent方法才能將其移除,以免它在繼續傳遞下去。

EventBus 簡單實用 黏性事件

匯入依賴 implementation org.greenrobot eventbus 3.0.0 這種是黏性事件 eventbus.getdefault poststicky token token是我需要傳遞的引數接受頁面需要註冊與反註冊 eventbus.getdefault register...

安卓 廣播(有序 粘性 EventBus)

如下 1.清單檔案 2.傳送廣播 intent intent newintent www.wangpeng intent.putextra name 我是有序排序 sendorderedbroadcast intent,null 3.接收類 an highlighted block string n...

EventBus 使用 Sticky粘性傳值事件

eventbus 使用基本步驟 依賴 implementation org.greenrobot eventbus 3.0.0 1.註冊與解除註冊 override fun onstart override fun onstop 2.建立訊息類 class eventmessbean 3.傳送 ev...