GreenRobot:EventBus 的 isRegistered() 方法未按预期工作
GreenRobot: EventBus's isRegistered() method not working as expected
我正在使用 EventBus 接收事件。我想检查我的 Activity 是否已经注册,因为我只需要在应用程序的整个生命周期中注册一次,但问题是,即使我遇到那个已注册 EventBus 的 Activity再次注册它,由于多个事件被触发。
下面是我的代码示例!
public void registerEventBus(){
if(EventBus.getDefault().isRegistered(this)){
Log.e(TAG, "already registered event bus for "+TAG);
}
else{
EventBus.getDefault().register(this);
Log.e(TAG, "registering event bus for "+TAG);
}
}
此外,找到日志的屏幕截图,您可以在其中看到最初它给了我正确的响应但是一旦我再次移动到 Activity 它再次注册订阅者!
注意:请不要建议我取消注册,因为我希望它始终被注册!
也在 github 上回答了 - https://github.com/greenrobot/EventBus/issues/355
如果您的 Activity 被销毁并重新创建(例如在轮换期间),那么您的 Activity 的新实例将在 EventBus 中注册。
如果您没有在相应的退出点 (onPause/onStop/onDestroy) 期间取消注册旧实例,则会向两个 Activity 发送一个事件。
确认将您的日志更改为
Log.e(TAG, "already registered event bus for " + this);
我正在使用 EventBus 接收事件。我想检查我的 Activity 是否已经注册,因为我只需要在应用程序的整个生命周期中注册一次,但问题是,即使我遇到那个已注册 EventBus 的 Activity再次注册它,由于多个事件被触发。
下面是我的代码示例!
public void registerEventBus(){
if(EventBus.getDefault().isRegistered(this)){
Log.e(TAG, "already registered event bus for "+TAG);
}
else{
EventBus.getDefault().register(this);
Log.e(TAG, "registering event bus for "+TAG);
}
}
此外,找到日志的屏幕截图,您可以在其中看到最初它给了我正确的响应但是一旦我再次移动到 Activity 它再次注册订阅者!
注意:请不要建议我取消注册,因为我希望它始终被注册!
也在 github 上回答了 - https://github.com/greenrobot/EventBus/issues/355
如果您的 Activity 被销毁并重新创建(例如在轮换期间),那么您的 Activity 的新实例将在 EventBus 中注册。
如果您没有在相应的退出点 (onPause/onStop/onDestroy) 期间取消注册旧实例,则会向两个 Activity 发送一个事件。
确认将您的日志更改为
Log.e(TAG, "already registered event bus for " + this);