歲月磨沒了身上的荊棘,是失敗者多好的理由.
葵花三式
- 注冊
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á)