Frage

In meiner Android-App a Service läuft im Hintergrund und protokolliert GPS-Messwerte in eine Datenbank.Der Benutzer sieht eine Aktivität, die ihn präsentiert Radio Knöpfe.Ich möchte auch das aktuell ausgewählte Optionsfeld in der Datenbank protokollieren.

Wie kann ich über den Dienst auf das Optionsfeldobjekt zugreifen?

War es hilfreich?

Lösung

Eine einfache Methode hierfür (vorausgesetzt, Ihr Dienst wird im selben Prozess wie die Aktivität ausgeführt) ist die Verwendung einer gemeinsamen Einstellungsdatei.Die Aktivität kann jedes Mal in die Einstellungsdatei schreiben, wenn ein Optionsfeld geändert wird, und der Dienst kann entweder einen Listener für die Einstellungen registrieren oder den Status überprüfen, wann immer in die Datenbank geschrieben wird.

Der kompliziertere Weg, Präferenzen zu vermeiden, wäre, den Dienst mit Context.startService() zu starten (so dass er auch dann weiterläuft, wenn die Aktivität nicht verfügbar ist) und dann die Aktivität aufzurufen, Context.bindService() (Starten von Dienst, wenn er nicht ausgeführt wird), um einen IBinder-Stub zurückzugeben, mit dem er kommunizieren kann.Für diesen Ansatz empfehle ich Ihnen, sich die anzusehen Service-API-Demos.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top