131 字
1 分钟
EventBus 报“Subscriber class already registered to event class”错误
2025-08-30

这句子的话意思也很容易理解,“接收者类已经被注册为事件类了”。

之前我是这么写:

事件注册是写在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();
}
EventBus 报“Subscriber class already registered to event class”错误
https://iszengmh.pages.dev/posts/eventbus-报subscriber-class-already-registered-to-event-class错误/
作者
Rise Zeng
发布于
2025-08-30
许可协议
CC BY-NC-SA 4.0