其他分享
首页 > 其他分享> > android-GreenRobot:EventBus的isRegistered()方法无法按预期工作

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

作者:互联网

我正在使用EventBus接收事件.我想检查我的活动是否已经注册,因为我只需要在应用程序的整个生命周期中进行一次注册,但是问题是,即使我来到被注册的活动,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);
        }
    }

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

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

enter image description here

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

解决方法:

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

如果您没有在相应的出口点(onPause / onStop / onDestroy)期间注销旧实例,则将一个事件发送到两个活动.

确认将日志更改为

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

标签:event-bus,greenrobot-eventbus,android,greenrobot-eventbus-3-0
来源: https://codeday.me/bug/20191118/2026016.html