EventBus點單使用

歲月磨沒了身上的荊棘,是失敗者多好的理由.

葵花三式

  • 注冊
EventBus.getDefault().register(this); 
  • 響應(yīng)
@Subscribe(threadMode = ThreadMode.BackgroundThread) ///一個在后臺線程執(zhí)行的方法,用于接收事件
public void onUseEvent(MsgEvent event) {//參數(shù)必須是MsgEvent類型, 否則不會調(diào)用此方法
}
  • 解綁
//解除綁定
EventBus.getDefault().unregister(this);
  • 發(fā)送消息
//任意地方調(diào)用
EventBus.getDefault().post(new MsgEvent())

微操作

之前說的使用方法, 都是需要先注冊(register), 再post,才能接受到事件;
如果你使用postSticky發(fā)送事件, 那么可以不需要先注冊, 也能接受到事件.

  • Sticky事件的使用
//你可以在沒有register的情況下:發(fā)送Sticky類型消息
EventBus.getDefault().postSticky(new MsgEvent("Use Sticky"));
//注冊之后,馬上就能收到剛剛postSticky發(fā)送的事件
EventBus.getDefault().register(this);
//事件響應(yīng),注意sticky = true
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true)
public void onEvent(MsgEvent event){
}
  • 參數(shù)說明
@Subscribe :注解標(biāo)簽,表示一個訂閱
threadMode : 1.ThreadMode.MainThread在UI線程執(zhí)行
             2. ThreadMode.BackgroundThread 后臺線程
             3.ThreadMode.Async強(qiáng)制在后臺執(zhí)行
             4.ThreadMode.PostThread 在發(fā)送消息所在線程
sticky: 表示是否是一個粘性事件 如果你使用postSticky發(fā)送一個事件,那么需要設(shè)置為true才能接受到事件
priority: 優(yōu)先級如果有多個對象同時訂閱了相同的事件, 那么優(yōu)先級越高,會優(yōu)先被調(diào)用.     
  • 不只局限在Activity與Fragment中使用
可以自任意java中
EventBus.getDefault().register(this);//其中this是object類型的
源碼思密達(dá)

EventBus雖好可不要貪杯哦

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

推薦閱讀更多精彩內(nèi)容

  • 一、簡介 EventBus是由greenrobot 組織貢獻(xiàn)的一個Android事件發(fā)布/訂閱輕量級框架。Even...
    Mr丶sorrow閱讀 15,003評論 0 13
  • 本文的EventBus,是指greenrobot的 EventBus, 主要以EventBus3.0 講解; 什么...
    Simon_z閱讀 5,190評論 2 2
  • EventBus源碼分析(一) EventBus官方介紹為一個為Android系統(tǒng)優(yōu)化的事件訂閱總線,它不僅可以很...
    蕉下孤客閱讀 4,048評論 4 42
  • 先吐槽一下博客園的MarkDown編輯器,推出的時候還很高興博客園支持MarkDown了,試用了下發(fā)現(xiàn)支持不完善就...
    Ten_Minutes閱讀 582評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139