5 Stimmen

Android-Dienste: Lebenszyklusüberlegungen

Ich erstelle eine Android-App, die zwei Dienste haben wird, die alle 24 Stunden Daten über die Nutzung des Telefons durch den Benutzer senden.

Der Benutzer sollte die App ausführen, die Schaltflächen umlegen, um das Protokollieren der Nutzung des Telefons zu aktivieren und dann sollte der Benutzer ein normales Leben mit seinem Telefon führen können, bis er die App erneut startet und die Schaltfläche umlegt, um das Protokollieren der Informationen zu stoppen.

  • Welche Überlegungen sollte ich bezüglich des Lebenszyklus der Dienste berücksichtigen?
  • Was ist mit der Interaktion des Benutzers mit dem Telefon, während die Dienste die Daten senden sollten?

Alle Informationen werden sehr geschätzt, da mein Geist ein wenig überfordert ist mit all dem!

Vielen Dank im Voraus an alle!

8voto

DeeV Punkte 35598

Der Dienst kann jederzeit über das Einstellungsmenü beendet werden. Er kann auch jederzeit von Android beendet werden, wenn es die Ressourcen für die gerade ausgeführte Aktivität benötigt. onDestroy() wird so oder so aufgerufen, also verwenden Sie das, um alles Nötige zu speichern.

Der Dienst läuft im Hintergrund, aber über den Haupt-UI-Thread. Daher ist es möglich, den Betrieb des Telefons durch einen Dienst zu blockieren. Es sieht aus, als ob sich das Telefon aufgehängt hat, wenn es wirklich ein Dienst ist, der etwas versucht. Jegliches Blockierverfahren sollte in einem Thread wie einem Java-Timer, einem Java-Thread oder AsyncTask verwendet werden.

Zur gleichen Zeit kann nur eine Version des Dienstes ausgeführt werden. Allerdings wird beim Aufruf von startService(myService), wenn "myService" bereits läuft, im Grunde der aktuell laufende Dienst überschrieben und onStartCommand() wird erneut aufgerufen. Jedoch ist ein Aufruf von stopService(myService) erforderlich, um ihn zu stoppen, unabhängig davon, wie oft startService(myService) aufgerufen wurde.

stopService(myService) wird den Dienst nicht stoppen, wenn der Dienst an irgendetwas gebunden ist. Er wird warten, bis alle Bindungen entfernt sind, bevor der Dienst stoppt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X