Eventbus學習筆記

2021-09-26 18:46:42 字數 1982 閱讀 5194

手動敲**實現一下eventbus的註冊事件、發布訊息、接收訊息、登出事件訂閱,有助於理解

下面以loginactivity(註冊事件、接收訊息、登出事件)、postmessageactivity(發布訊息)為例,按順序進行講解

一.在build.gradle引入:版本號可以在github找最新的

implementation  'org.greenrobot:eventbus:3.0.0'
二:自定義訊息事件

public class messageevent 

public messageevent(object obj)

public messageevent(int message, object obj)

public int getmessage()

public void setmessage(int message)

public object getobj()

public void setobj(object obj)

}

三.loginactivity中:註冊事件

切記,在未登出事件訂閱情況下只能註冊一次,ondestroy裡進行登出,後面會講

eventbus.getdefault().register(this);//註冊事件,切記,在未登出情況下只能註冊一次,ondestroy裡進行登出,後面會將
四.postmessageactivity中(loginactivity已「註冊事件」後跳轉到postmessageactivity):傳送訊息(傳送後finishactivity當前activity)

mbinding.edpostmessage.gettext().tostring()是獲取介面輸入框內容

eventbus.getdefault().post(new messageevent(mbinding.edpostmessage.gettext().tostring()));
五.loginactivity中:接收訊息(把三傳送的訊息顯示在文字上進行驗證)

@subscribe(threadmode = threadmode.main)

public void ongetmessage(messageevent message)

六.loginactivity的ondestroy中(一般放在ondestroy,也可以手動登出):登出事件訂閱

@override

protected void ondestroy()

上面三四順序調換一下,即先發布訊息再註冊,就會接收不到訊息了

粘性事件:解決發布了訊息再訂閱,收不到訊息的問題(其它的順序操作一樣)

三.postmessageactivity:發布粘性事件 (用poststicky)

eventbus.getdefault().poststicky(new messageevent(mbinding.edpoststicky.gettext().tostring()));
四.loginactivity:註冊(postmessageactivity發布粘性訊息後,才進行註冊)

eventbus.getdefault().register(this);//註冊事件,切記,在未登出情況下只能註冊一次,ondestroy裡進行登出,後面會將
五. loginactivity:接收粘性訊息(注意ongetstickyevent和註解)

@subscribe(threadmode = threadmode.main, sticky = true)

public void ongetstickyevent(messageevent message)

EventBus原始碼閱讀筆記(1)

本例子基於eventbus2.4.0的原始碼,全部筆記都以的方式呈現,因為在部落格上貼上 實在難看。1.閱讀原始碼時使用的例子,包名是com.subuju.eventbus 2.進入eventbus.getdefault 4.繼續看另乙個過載的構造方法 5.好了,執行到這裡,就完成了eventbus...

關於EventBus3 0(筆記)

今天在用eventbus的時候,突然發現訊息發不出去了!eventbus的使用本身不難,突然碰到這種情況有點懵逼。google了一下,也沒找到答案。subscribe threadmode threadmode.main fun onhit 1 replacefragment replacefrag...

EventBus基本理解

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