? ? ? 在最近的項(xiàng)目中使用EventBus代替廣播,intent傳遞消息等缅疟,大大減少了代碼量,提升編碼速度遍愿,同時整體的代碼優(yōu)雅型也提高了存淫。
使用過程中遇到一些小問題,就是在當(dāng)前activity使用EventBus.getInstance().post(new Test("eventbus發(fā)送消息成功!"));然后在onCreate中EventBus.getIntsance().register(this);
@Subscribs(threadMode = ThreadMode.MAIN)
public void onMain(Test test){Log.i("test",test);} test在打印臺打印出來的信息是"eventbus發(fā)送消息成功!" 沼填。
如果在另外一個activity桅咆,SecondActivity跳轉(zhuǎn)的時候使用EventBus就會接受不到報(bào)錯No subscribers registered for event class com.zhongxunkeji.app.carillegalrecord.busevent.LoginSuccessEvent,后臺花了幾個小時終于找到問題的原因坞笙,就是跳轉(zhuǎn)到SecondActivity的時候在EventBus注冊之前岩饼,消息已經(jīng)發(fā)送了刽脖,因此才會出現(xiàn)上面的錯誤。
解決方案:使用粘性發(fā)送消息的方式忌愚,EventBus.getInstance().postSticky(new Test("發(fā)送成功"));當(dāng)然在接收的時候指定方式sticky = true;如@Subscribs(Sticky =true),就可以解決上面的問題曲管。粘性發(fā)送消息的意思是如果沒有接收到消息還會繼續(xù)發(fā)送最新發(fā)送過的消息。好了簡單的記錄一下硕糊,因?yàn)樵诰W(wǎng)上找了沒有對于類似的問題解決方案院水。。還是希望能夠幫助一些遇到這個問題的朋友简十。檬某。。螟蝙。