Android: Stop-Service und Alarme, wenn die Anwendung beendet
-
25-09-2019 - |
Frage
ich eine Anwendung, die von mehreren Aktivitäten bestehen. Wenn die Anwendung gestartet wird, werden einige Alarme mit AlarmManager
und einige Dienste geplant gestartet werden:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
a.setInexactRepeating(...)
....
Ich mag jede Art und Weise kennen zu garantieren, dass jeder Dienst beendet wird und jeder Alarm ist ungeplantes, wenn der Benutzer der Anwendung beendet .
Das Problem ist, dass der Benutzer die Anwendung von verschiedenen Aktivitäten lassen kann, und ich weiß nicht wie die Idee der Überschreiben die onDestroy
Methode in jeder Aktivität. Gibt es eine bekannte Intent
ich erhalten kann, wenn die Anwendung beendet?
Ich habe auch festgestellt, dass eine Android-Anwendung eine Klasse haben kann, die von Application
erstreckt, mit einer onTerminate
Methode:
public class MyApplication extends Application {
@Override
public void onTerminate() {
...
}
}
Aber die Dokumentation ist sehr klar: „nie auf dieser Methode abhängen genannt wird, in vielen Fällen eine unnötige Anwendung Prozess wird einfach vom Kernel beendet werden, ohne dass Anwendungscode ausführen“
Jeder Vorschlag wird sehr geschätzt.
Lösung
Ich mag jede Art und Weise kennen zu Garantie jeden Dienst beendet wird und Jeder Alarm wird ohne Zeitplan, wenn die Benutzer beendet die Anwendung.
Es gibt nicht so etwas wie in Android „Benutzer die Anwendung beendet“.
Gibt es ein bekanntes Intent I can erhalten, wenn die Anwendung beendet?
Nein.
Ich habe auch, dass ein Android gefunden Anwendung kann eine Klasse, dass erstreckt sich von der Anwendung, mit einem OnTerminate Methode
Dies wird genannt werden, in vielen Fällen, irgendwann nach dort nicht mehr ausgeführt werden Komponenten. In Ihrem Fall gibt es Komponenten (Services) ausgeführt wird.
Aber die Dokumentation ist sehr klar: „Hängen nie auf dieser Methode Wesen namens; in vielen Fällen einem nicht benötigten Bewerbungsverfahren einfach sein vom Kernel beendet ohne Ausführung jeder Anwendungscode "
Der einzige Fall, den ich kenne, wenn es nicht aufgerufen werden, wenn der Prozess beendet wird, wobei in diesem Fall Ihres Dienst wird auch beseitigt werden, obwohl geplante Alarme nicht.