這句子的話意思也很容易理解,“接收者類已經被註冊爲事件類了”。
之前我是這麼寫:
事件註冊是寫在onStart()裏面的
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
來看一下Activity的生命週期:
onStart()方法會在onCreate()後調用一次,在onRestart()後又調用一次,所以難免會出現重複註冊EvenBus的情況。
解決方式:
@Override
protected void onStart() {
super.onStart();
if(!EventBus.getDefault().isRegistered(this)){//加上判斷
EventBus.getDefault().register(this);
}
}
@Override
protected void onDestroy() {
if (EventBus.getDefault().isRegistered(this))//加上判斷
EventBus.getDefault().unregister(this);
super.onDestroy();
}