3

我正在使用EventBus来接收事件。我想检查我的 Activity 是否已经注册,因为我只需要在应用程序的整个生命周期中注册一次,但问题是,即使我来到已注册的那个 Activity,EventBus 也会再次注册它,并且由于那个多重事件被触发。

下面是我的代码示例!

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

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

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

在此处输入图像描述

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

4

1 回答 1

3

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

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

确认将您的日志更改为

Log.e(TAG, "already registered event bus for " + this);
于 2016-09-21T11:31:53.980 回答