1幔摸、EventBus事件接收不到的幾種情況
a、沒有調(diào)用EventBus的注冊方法(register)
b寓调、使用的是普通的訂閱事件,而在注冊訂閱消息之前就發(fā)送了消息(解決可以參考第3個問題)
c究流、接收方法中的參數(shù)與發(fā)送的不一致,導(dǎo)致EventBus判斷沒有對應(yīng)的注冊者
d搏色、發(fā)送的是粘性事件,并且是同一類型的粘性事件(通過源碼可以發(fā)現(xiàn):粘性事件會加入一個叫stickyEvents的Map集合中券册,該集合使用event.getClass作為key频轿,event作為value,因此當(dāng)出現(xiàn)同一類的粘性事件時烁焙,會將之前的粘性事件給替換掉航邢。)
e.使用的是粘性事件,可是在訂閱事件處理函數(shù)上未加 sticky = true
?2考阱、事件post了一次翠忠,事件處理卻執(zhí)行了多次鞠苟?
出現(xiàn)這個問題的原因一般是EventBus被注冊了多次乞榨,無論是在Activity,Fragment,Dialog類中,都要進(jìn)行事件的銷毀解綁處理当娱。
3吃既、如何實(shí)現(xiàn)在EventBus注冊之前,發(fā)送事件也能接收到事件跨细?
在發(fā)送事件的時候使用Eventbus.getDefault().postSticky()鹦倚,就可以不用關(guān)心注冊事件是否已經(jīng)注冊撇贺;或者注冊前后的問題馆里,如果發(fā)送粘性事件之前沒有注冊事件,事件注冊完成就會收到之前發(fā)送的粘性事件揽碘;