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);