2016-03-23 10 views
2

Ich verwende GreenRobot's EventBus Version 3.0. Und es gibt einen Abschnitt on the docs, die sagt, dass wir sticky Ereignisse veröffentlichen können, und diese Ereignisse erhalten wir so zeichnen haben:Werden EventBus-Sticky-Ereignisse automatisch bei der Abonnentenmethode entfernt?

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN) 
public void onEvent(MessageEvent event) { 
    // Do something with the message. 
    // Is the event removed from the bus on this method? 
} 

Also, meine Frage ist: Sobald der Teilnehmer das klebrige Ereignis empfängt, sind sie entfernt vom Bus automatisch, oder muss ich sie manuell entfernen?

Hinweis: Ich weiß, dass ich sie manuell an jedem anderen Ort meines Codes mit Hilfe der folgenden Zeile entfernen:

EventBus.getDefault().removeStickyEvent(stickyEvent); 

Aber ich möchte wissen, ob ich in der Teilnehmer Methode wirklich tun müssen, dass .

Antwort

6

Nein, sie werden nicht entfernt.

Wenn Sie jedoch eine Nachricht kleben, nur um sie zu entfernen, wenn jemand sie liest, beschreiben Sie eine Warteschlange.

Klebrige Ereignisse sind wie klebrige Beiträge in einem schwarzen Brett: Sie sollen "oben" bleiben und von jedem für eine gewisse Zeit betrachtet werden.

+0

Gute Analogie. :) – Mauker

3

Sie verbleiben auf dem Bus, bis sie explizit entfernt werden.