2015-01-18 15 views
6

W moim kodu słucham imprez wykorzystujących @Subscribe adnotację:metoda @Subscribe nazywa wielokrotne czasu na tej samej imprezie

@Subscribe 
public void orderUpdate(OrderUpdateEvent event) 

Moim problemem jest to, że ta metoda jest wywoływana wiele razy (1-3 zależy od przebiegu uruchomić) dla tego samego obiektu zdarzenia.

ten sposób wyślę to wydarzenie:

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

Co może być przyczyną tego? Czy coś mi brakuje?

+0

Czy znalazłeś już rozwiązanie problemu? –

+1

tak, ponieważ @CommonsWare zasugerował, że 'unregister()' nie został wywołany. – skywalker

Odpowiedz

4

Co może być tego przyczyną?

Jedna z możliwości polega na tym, że trzy instancje tej klasy są nadal zarejestrowane w magistrali zdarzeń. Upewnij się, że jesteś unregister(), gdy obiekt nie powinien już odbierać wiadomości.

+1

Mam podobne pytanie: Na przykład otrzymałem zdarzenie w metodzie @ Subscribe, niż zamknąłem 'Fragment' i niezarejestrowany Bus w metodzie' onPause'. Potem ponownie otworzyłem 'Fragment', zarejestrowałem Bus w metodzie' onResume' i odebrałem to samo zdarzenie, które już wcześniej miałem. Nie chcę otrzymywać tego samego wydarzenia za każdym razem, gdy wracam do "Fragmentu". Wszelkie pomysły, jak tego uniknąć? –

+0

@vovaxo: Nie wiem jak to by się stało z Otto. – CommonsWare

+0

@vovaxo czy jesteś pewien, że to ten sam obiekt Event? – skywalker

Powiązane problemy