Kommunikation zwischen Service und Aktivität auf Android

Was sind die Möglichkeiten, um zwischen einer Aktivität und einem Dienst auf Android zu kommunizieren?

Heute habe ich gelernt, wie man mit BroadcastRecevier kommuniziert, indem ich einen Intent von Activity sendete und antwortete.

Welche anderen Möglichkeiten habe ich? Hat jemand ein Tutorial / eine Referenz dazu?

Die Antwort auf diese Frage lautet:

Es gibt verschiedene Möglichkeiten für eine Aktivität, mit einem Dienst zu kommunizieren und umgekehrt. In diesem Abschnitt werden die verschiedenen Möglichkeiten erläutert und Empfehlungen zur Verwendung gegeben.

5.1. Bindung der Aktivität an den lokalen Dienst Wenn der Dienst im selben Prozess wie die Aktivität gestartet wird, kann die Aktivität direkt an den Dienst gebunden werden. Dies ist ein relativ einfacher und effizienter Kommunikationsweg.

5.2. Empfänger verwenden Sie können für die Kommunikation auch dynamisch registrierte Empfänger verwenden. Zum Beispiel kann Ihre Aktivität einen Empfänger dynamisch registrieren und der Dienst sendet entsprechende Ereignisse aus.

5.3. AIDL für Services in einem anderen Prozess Um sich an einen Service zu binden, der in einem anderen Prozess ausgeführt wird, müssen Sie Inter Process Communication (IPC) verwenden, da die Daten zwischen verschiedenen Prozessen gesendet werden müssen. Dazu müssen Sie eine AIDL-Datei erstellen, die einer Java-Schnittstelle ähnelt, jedoch mit der Dateierweiterung .aidl endet und nur andere AIDL-Dateien erweitern darf.

Dieser Ansatz ist erforderlich, wenn Ihr Dienst für andere Anwendungen bereitgestellt werden soll, andernfalls sollten Sie einen lokalen Dienst bevorzugen.

5.4. Senden von Absichtsdaten und Bündeln an die Dienste Der Dienst empfängt Daten von der startenden Android-Komponente und kann diese Daten verwenden.

5.5. Handler und Messenger Wenn der Dienst an die Aktivität zurückmeldet, kann er ein Objekt vom Typ Messenger über die Intent-Daten empfangen, die er von der Aktivität erhält. Wenn der Messenger an einen Handler in der Aktivität gebunden ist, kann der Dienst Objekte vom Typ Nachricht an die Aktivität senden.

Ein Messenger ist parzellierbar, dh, er kann an einen anderen Prozess übergeben werden, und Sie können dieses Objekt verwenden, um in der Aktivität Nachrichten an den Handler zu senden.

Messenger bietet auch die Methode getBinder (), mit der ein Messenger an die Aktivität übergeben werden kann. Die Aktivität kann daher Nachrichten an den Dienst senden.

Dank anhttp://www.vogella.com/articles/AndroidServices/article.html

Antworten auf die Frage(2)

Ihre Antwort auf die Frage