Ich entwickle eine Anwendung für ein kleines Forschungsprojekt, das die ActivityRecognition
API und das GPS nutzt. Ich versuche, beide APIs als Hintergrundprozess ausführen zu lassen und aktuelle Daten regelmäßig in einer Protokolldatei aufzuzeichnen. Diese Protokolldatei kann dann nach der Datenerfassung manuell analysiert werden.Android Hintergrund Dienstleistungen Best Practice
Mein Problem ist es, den besten Weg zu verstehen, dies zu tun. Ich habe ursprünglich aus der ActivityRecognition entwickelt. Mein Prozess ist wie folgt:
- Erstellen Sie Location-Listener über requestLocationUpdated, wenn Schaltfläche in MainActivity angetippt wird. Erstellen Sie auch ActivityRecogition-Listener in MainActivity.
- Wenn das Standortaktualisierungsereignis ausgelöst wird, werden Daten per Broadcast gesendet.
- Wenn MainActivity läuft, hören über broadcastReciever auszustrahlen, aktualisieren gui, speichern letzte Änderung in der Klasse-weiten Anwendungsbereich Größe (in MainActivity)
- Wenn ActivityRecognition ein Update bekommt, melden die Daten in einer Datei zusammen mit den GPS-Daten wird in der klassenweiten Bereichsvariablen in MainActivity gespeichert.
Das offensichtliche Problem dabei ist, dass obwohl die Lage Service auch im Hintergrund arbeitet, wenn der MainActivity ein onPause getroffen hat, die ActivityRecognition noch die Datei Logger ist nicht im Hintergrund als Dienst ausgeführt werden MainActivity so erfordern zu sein Laufen.
Was ist die beste Vorgehensweise für die Verarbeitung mehrerer Hintergrundprozesse für einen Zweck? Im Hintergrund Service erstellen, um beide zu behandeln? Dann führe diese App in der OnCreate/button Tap? Dann senden Sie Daten über eine Broadcast-Nachricht an MainActivity (wenn es da ist, um zu hören)?
Um zu klären - sagen Sie den ActivityRecognition Code an die Stelle zu verschieben, Bedienung? Wenn beide unter einem Dienst ausgeführt werden und dann "Ereignisse" über eine Broadcast-Nachricht an die MainActivity gesendet werden, um die GUI zu aktualisieren? Ist das der beste Weg, dies zu erreichen? – kirgy
Nein ... Ich kann mehrere Dienste haben ... Verwenden Sie Intent-Service für die AktivitätRecognition so imediatelt es ist getan, es Aufgabe zu tun .. ist es selbst beendet .. Verstanden? .. und einen Ausschnitt von dem, was Sie getan haben, so zu tun weit .. so kann ich eine klarere Sicht bekommen – Chijioke