2015-01-18 9 views
6

In meinem Code ich für Veranstaltungen zu hören bin mit @Subscribe dem Vermerk:@Subscribe Methode aufgerufen mehrere Zeit für das gleiche Ereignis

@Subscribe 
public void orderUpdate(OrderUpdateEvent event) 

Mein Problem ist, dass diese Methode mehrfach aufgerufen wird (1-3 von Laufe hängt auszuführen) für dasselbe Ereignisobjekt.

Dies ist, wie ich dieses Ereignis senden:

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

Was ist die Ursache dafür sein könnte? Vermisse ich etwas?

+0

Haben Sie bereits eine Lösung für Ihr Problem gefunden? –

+1

ja, wie @CommonsWare vorgeschlagen 'unregister()' wurde nicht aufgerufen. – skywalker

Antwort

4

Was könnte die Ursache dafür sein?

Eine Möglichkeit ist, dass Sie drei Instanzen dieser Klasse noch auf dem Ereignisbus registriert haben. Stellen Sie sicher, dass Sie unregister() wenn das Objekt keine Nachrichten mehr empfangen sollte.

+1

Ich habe ähnliche Frage: Zum Beispiel habe ich Ereignis in '@ Subscribe' Methode erhalten, als ich' Fragment' und nicht registrierten Bus in Methode 'onPause' geschlossen. Danach habe ich 'Fragment' wieder geöffnet, den Bus in der Methode' onResume' registriert und das gleiche Ereignis erhalten, das ich bereits zuvor behandelt hatte. Ich möchte nicht jedes Mal dasselbe Ereignis erhalten, wenn ich zum 'Fragment' zurückkehre. Irgendwelche Ideen, wie man das vermeidet? –

+0

@vovaxo: Ich weiß nicht, wie das mit Otto passieren würde. – CommonsWare

+0

@vovaxo Sind Sie sicher, dass dies das gleiche Ereignisobjekt ist? – skywalker

Verwandte Themen