Android-Design: Hintergrunddienst oder AlarmManager?

Ich baue eine App, die in regelmäßigen Abständen den Batteriestatus, die WLAN-Verbindung und die Standortdaten überwacht und die Ergebnisse in eine Datei schreibt (und sie später an einen Server sendet). Bei der Installation der App sollte die Überwachung deaktiviert sein - der Benutzer, der sie aktiviert, sollte jedoch einen Neustart überstehen. Nach langem Lesen habe ich festgestellt, dass ich grundsätzlich zwei Möglichkeiten habe:

UnterklasseService und feuere es von meiner Aktivität ab. Stellen Sie es auf den Vordergrund, STICKY und was nicht und hoffen Sie, dass es nicht von Android getötet wird - und achten Sie darauf, wenn Android es neu erstellt (eigentlich sollten 3 Dienste vorhanden sein, damit die Synchronisierung zwischen ihnen chaotisch sein kann). Starten Sie einen Thread im Service (ich denke, keine Notwendigkeit für Executors) und haben Sie esThread.sleep(REGULAR_INTERVAL). Wach auf, sammle die Daten, schreibe sie in eine Datei. Übertragen Sie die gesammelten Informationen und zeigen Sie sie in meiner Aktivität an, wenn sie ausgeführt werden (wodurch ein Rundfunkempfänger registriert wurde). Spülen und wiederholenwhile(true). Haben Sie eine Möglichkeit, dies zu unterbrechenLassen Sie meine Aktivität einen PendingIntent bei AlarmManager registrieren, der alle REGULAR_INTERVAL ausführt. Ich habe mich nicht so sehr mit den technischen Details dieses Ansatzes befasst - aber ich hoffe, dass ich in der Lage sein werde, mit PendingIntent einen IntentService zu erstellen und auszuführen (dies scheint der richtige Weg zu sein - die Thread-Maschine kostenlos zu haben sowie herunterzufahren allein). Ein Grundgerüstcode für diesen Ansatz wäre willkommen.

Ich denke, ich muss in beiden Fällen einen Boot-Empfänger registrieren, um die gemeinsamen Einstellungen zu überprüfen (haben dies bereits getan) und in Fall 1 die Dienste starten, während in Fall 2 ein Empfänger für das Alarmereignis registriert und der Alarmmanager eingerichtet wird - Das ist der Teil, für den ich einen Code brauche.

Also - bevor ich damit anfange - was wäre der bevorzugte Ansatz?

Fazit: Die App sollte einige Telefoneigenschaften überwachen und in eine Datei schreiben, bis der Benutzer sie abschaltet.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage