3

Я использую EventBus для получения событий. Я хочу проверить, зарегистрирована ли моя активность или нет, поскольку мне нужно регистрироваться только один раз на протяжении всего срока действия приложения, но проблема в том, что когда я даже прихожу к этому Activity, зарегистрированному EventBus, он регистрирует его снова и из-за этого нескольких события увольняются.GreenRobot: метод EventBus isRegistered() работает не так, как ожидалось

Ниже приведен пример моего кода!

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

ответ

3

Если ваша активность будет уничтожена и создана заново (например, во время вращения), то новый экземпляр вашей деятельности будет зарегистрирован EventBus.

Если вы не отмените регистрацию старого экземпляра во время соответствующей точки выхода (onPause/onStop/onDestroy), событие будет отправлено обеим операциям.

Чтобы подтвердить изменить свой журнал в

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

 Смежные вопросы

  • Нет связанных вопросов^_^