Im Gegensatz zu LocalBroadcastManager, EventBus ist einfacher zu verwenden. Sie gehen nur über 3 Schritte:
1- Erstellen Sie eine Ereignisklasse. Eine einfache Java-Klasse, die die Antwort darstellt, wenn die Aktion auftritt.
2- das Ereignis Bus als Abonnent registriert in Ihrer Aktivität onCreate Methode
EventBus.getDefault().register(this);
Und natürlich austragen es in Ihrer Aktivität onDestroy Methode
EventBus.getDefault().unregister(this);
3- Die unterzeichnende Methode erstellt wird in derselben Aktivität, die für den EventBus registriert wurde. Beispiel in WorkOrderActivity
@Subscribe
public void onEvent(EventClass event)
Wenn das Ereignis auftreten, sollten Sie die Post-Methode aufrufen, vorbei an der Veranstaltung Objekt, das Sie vorher erstellt.
EventBus.getDefault().post(new EventClass (Data));
Wie kmaini erwähnt, können Sie es mit LocalBroadcastManager ersetzen, aber Sie werden die Daten von der Absicht selbst abbilden müssen. Im Gegensatz zu EventBus, die Objekte übergeben kann.
Auch greenrobot, die Schöpfer der EventBus Bibliothek, beantwortet diese Frage here:
Q: Wie ist EventBus anders Android BroadcastReceiver/Intent System?
A: Im Gegensatz zum Android BroadcastReceiver/Intent-System verwendet EventBus Standard-Java-Klassen als Ereignisse und bietet eine bequemere API. EventBus ist für viel mehr Fälle, in denen Sie nicht möchten durch den Aufwand der Einrichtung Intents, Vorbereitung Intent Extras, die Umsetzung Broadcast-Empfänger und Extraktion Intent Extras wieder gehen wollen. Außerdem kommt EventBus mit einem viel geringeren Aufwand.
Ich habe Greenrobot Event nicht verwendet, aber ich kann das nicht kommentieren. Aber im Allgemeinen, wenn die Kommunikation zwischen Aktivität und Service desselben Prozesses ist, ist es besser, LocalBroadcastManager als BroadcastReceiver zu verwenden. – kmaini
@kmaini Gibt es ein Beispiel oder einen Link, auf den du gestoßen bist, der dir sehr nützlich ist? –