2015-01-18 4 views
6

В моем коде я слушаю для событий с помощью @Subscribe заметку:метод @Subscribe называется несколько раз для того же события

@Subscribe 
public void orderUpdate(OrderUpdateEvent event) 

Моя проблема заключается в том, что этот метод вызывается несколько раз (1-3 зависит от пробега для запуска) для одного и того же объекта события.

Это, как я отправить это событие:

busProvider.getEventBus().postOnMain(new OrderUpdateEvent(); 

Что может быть причиной этого? Мне что-то не хватает?

+0

Вы уже нашли решение проблемы? –

+1

Да, поскольку @CommonsWare предложил 'unregister()' не был вызван. – skywalker

ответ

4

Что может быть причиной этого?

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

+1

У меня есть аналогичный вопрос: например, я получил событие в методе '@ Подписаться', чем закрыл' Fragment' и незарегистрированную шину в методе 'onPause'. После этого я снова открыл «Фрагмент», зарегистрировал шину в методе 'onResume' и получил то же событие, что и раньше. Я не хочу получать одно и то же событие каждый раз, когда я возвращаюсь к «Фрагменту». Любые идеи, как избежать этого? –

+0

@vovaxo: Я не знаю, как это произойдет с Отто. – CommonsWare

+0

@vovaxo вы уверены, что это тот же объект Event? – skywalker

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