Das hängt davon ab, wie schnell Sie Ihre Anwendung schließen wollen.
Eine sichere Methode zum Schließen Ihrer Anwendung ist finishAffinity();
Es schließt Ihre Anwendung, nachdem alle Prozesse abgeschlossen sind. Dies kann einige Zeit in Anspruch nehmen. Wenn Sie Ihre Anwendung auf diese Weise schließen und sie nach kurzer Zeit neu starten, kann es sein, dass Ihre neue Anwendung im selben Prozess läuft. Mit allen nicht beendeten Prozessen und Singleton-Objekten der alten Anwendung.
Wenn Sie sicher sein wollen, dass Ihre Anwendung vollständig geschlossen ist, verwenden Sie System.exit(0);
Dadurch wird Ihre Anwendung sofort geschlossen. Es ist jedoch möglich, dass Sie Dateien beschädigen, die Ihre Anwendung geöffnet hat, oder dass eine Bearbeitung der gemeinsamen Einstellungen nicht abgeschlossen wird. Verwenden Sie dies also mit Vorsicht.
Wenn Sie den Watchdog in Kombination mit einer lang laufenden Aufgabe verwenden, können Sie die Auswirkungen der verschiedenen Methoden erkennen.
new ANRWatchDog(2000).setANRListener(new ANRWatchDog.ANRListener() {
public void onAppNotResponding(ANRError error) {
MainActivity.this.finishAffinity();
System.exit(0);
}
}).start();
for(int i = 0; i < 10; ++i){
--i;
}
Dadurch wird Ihre Anwendung nach 2 Sekunden beendet, ohne dass ein ANR-Dialog oder etwas Ähnliches angezeigt wird. Wenn Sie entfernen System.exit(0) Wenn Sie diesen Code ausführen und die Anwendung neu starten, nachdem sie geschlossen wurde, werden Sie ein seltsames Verhalten feststellen, da die Endlosschleife noch immer läuft.