EventBus 报“Subscriber class already registered to event class”错误
这句子的话意思也很容易理解,“接收者类已经被注册为事件类了”。
之前我是这么写:
事件注册是写在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(); }