GreenRobot:EventBus的isRegistered()方法无法按预期工作

时间:2016-09-20 08:21:35

标签: android event-bus greenrobot-eventbus greenrobot-eventbus-3.0

我正在使用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);
        }
    }

此外,找到日志的屏幕截图,在其中您可以看到最初它给了我正确的响应但是一旦我再次移动到该活动,它再次注册订户!

注意:请不要建议我取消注册,因为我希望它始终注册!

enter image description here

在github上也回答了问题 - https://github.com/greenrobot/EventBus/issues/355

1 个答案:

答案 0 :(得分:3)

如果您的活动被销毁并重新创建(例如在轮换期间),那么您的活动的新实例将在EventBus中注册。

如果您在相应的退出点(onPause / onStop / onDestroy)期间未取消注册旧实例,则会向两个活动发送一个事件。

确认将您的日志更改为

Log.e(TAG, "already registered event bus for " + this);