手動敲**實現一下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...