Dienstleistungen sind manchmal ziemlich kompliziert.
Wenn Sie einen Dienst von einer Aktivität (oder Ihrem Prozess) aus starten, befindet sich der Dienst im Wesentlichen im selben Prozess.
Zitieren aus den Entwicklernotizen
Die meiste Verwirrung über die Service-Klasse dreht sich tatsächlich um das, was es nicht ist:
Ein Service ist kein separater Prozess. Das Service-Objekt selbst bedeutet nicht, dass es in einem eigenen Prozess ausgeführt wird. Sofern nicht anders angegeben, wird es im selben Prozess ausgeführt wie die Anwendung, zu der es gehört.
Ein Service ist kein Thread. Es ist kein Mittel, die Arbeit vom Haupt-Thread aus zu erledigen (um Fehler zu vermeiden, die auf die Anwendung nicht reagieren).
Dies bedeutet also, dass der Benutzer Ihren Prozess löscht, wenn der Benutzer die App von den letzten Aufgaben entfernt (dies schließt alle Ihre Aktivitäten usw. ein). Nehmen wir nun drei Szenarien.
Erstens, wenn der Dienst keine Vordergrundbenachrichtigung hat.
In diesem Fall wird Ihr Prozess zusammen mit Ihrem Dienst beendet.
Zweitens , wo der Dienst hat eine Vordergrund Benachrichtigung
In diesem Fall wird der Dienst nicht beendet und der Prozess auch nicht
Drittes Szenario Wenn der Dienst keine Vordergrundbenachrichtigung hat, kann er weiterhin ausgeführt werden, wenn die App geschlossen wird. Wir können dies tun, indem wir den Service in einem anderen Prozess ausführen. (Ich habe jedoch einige Leute sagen hören, dass es möglicherweise nicht funktioniert. Es bleibt Ihnen überlassen, es selbst auszuprobieren. )
Sie können einen Service in einem separaten Prozess erstellen, indem Sie das folgende Attribut in Ihr Manifest aufnehmen.
android: process = ": yourService"
oder
android: process = "yourService" Prozessname muss mit Kleinbuchstaben beginnen.
Zitieren aus Entwicklernotizen
Wenn der diesem Attribut zugewiesene Name mit einem Doppelpunkt (':') beginnt, wird bei Bedarf ein neuer Prozess erstellt, der für die Anwendung privat ist, und der Dienst wird in diesem Prozess ausgeführt. Wenn der Prozessname mit einem Kleinbuchstaben beginnt , wird der Dienst in einem globalen Prozess mit diesem Namen ausgeführt, sofern er dazu berechtigt ist. Auf diese Weise können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, wodurch der Ressourcenverbrauch verringert wird.
das habe ich gesammelt, wenn jemand ein Experte ist, korrigiere mich bitte, wenn ich falsch liege :)