EventBus的使用

近期使用EventBus碰到點問題順便分享下,正常情況下使用eventbus進行通訊在需要發送消息的地方EventBus.getDefault().post(wht);直接進行發送,在接收消息的界面oncreate()方法中進行注冊訂閱

EventBus.getDefault().register(this);

在onDestroy();中解除注冊

EventBus.getDefault().unregister(this);然后創建一個方法來接收傳遞過來的數據

//使用EventBus

@Subscribe(threadMode = ThreadMode.MAIN)

public voidonEvent(MtbMessage?integer) {}這樣就可以使用數據進行操作

上面所述為普通的發送事件,但是這種只能是在事先訂閱了才能收到消息

還有另一種粘連事件,就是當消息發送后將消息保存了起來,當你注冊訂閱的時候就會收到事件

發送時使用EventBus.getDefault().postSticky(snmessage);

接收時

@Subscribe(threadMode = ThreadMode.MAIN, sticky =true)

public voidonEvent(MtbMessage integer) {}

這樣就可以接收到數據了,但是你會發現每次進入該頁面時都會收到一條,這里就需要進行處理

//清除黏連事件

MtbMessage stickyEvent = EventBus.getDefault().getStickyEvent(MtbMessage.class);

if(stickyEvent !=null) {

EventBus.getDefault().removeStickyEvent(stickyEvent);

}

使用該方法進行清除,這樣就ok了.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容