Durch lokalen Service ist ich ein Service, der ist nur verbunden mit der Host-Anwendung. Es kann die Binder-Unterklasse-Version von Services verwenden oder es kann Messenger verwenden - es spielt keine Rolle. Außerdem werde ich nur Dienste berücksichtigen, die auf Hintergrundthreads ausgeführt werden, obwohl ich denke, dass dies unabhängig davon gilt.Unter welchen Bedingungen sind lokale Hintergrunddienste den Threads in Android vorzuziehen?
Ich habe versucht, den Wert der lokalen Dienste über einen einfachen Hintergrund Thread herauszufinden. Ich habe schon oft gesehen, dass die Hintergrund-Thread-Version Sie irgendwie mit dem Aktivitäts- oder Anwendungslebenszyklus verbindet und nur dann richtig ist, wenn Ihre Aufgabe nur ausgeführt werden sollte, wenn die App im Vordergrund ist ... aber ich sehe nicht, wie das ist wahr. Hintergrund-Threads sind AFAIK, die nicht mit dem Lebenszyklus ihres Erstellerkontexts in Beziehung stehen. Sie tun nicht oder etwas ähnliches.
Service beschreibt eine "Lifecycle-API", die eine externe (Client-) Kontrolle des Service erlaubt. Sie können also beispielsweise stopService
anrufen und das Kill-Verhalten in Service.onStop
implementieren, anstatt Ihre eigene API zu schreiben. Aber der Lebenszyklus ist so trivial-einfach, dass dies wie mehr Komplexität erscheint, nicht weniger. Zum Beispiel müssen stopService
und onStop
nicht zwei verschiedene Methoden in einer einfachen lokalen Implementierung sein.
Ich würde besonders gerne von echten Anwendungsfällen hören, in denen ein lokaler Dienst einem Thread wirklich vorzuziehen ist.