412 Stimmen

Wie man eine Android-Anwendung programmatisch beendet

Ich habe einige Codes zum programmgesteuerten Beenden einer Android-Anwendung gefunden. Wenn ich einen der folgenden Codes in onDestroy() aufrufe, wird dann die Anwendung vollständig beendet?

  1. System.runFinalizersOnExit(true)
    (OR)
  2. android.os.Process.killProcess(android.os.Process.myPid());

Ich möchte nicht, dass meine Anwendung im Hintergrund läuft, nachdem ich auf die Schaltfläche "Beenden" geklickt habe. Bitte informieren Sie mich, ob ich einen dieser Codes verwenden kann, um meine Anwendung zu beenden? Wenn ja, welchen Code kann ich verwenden? Ist es ein guter Weg, um die Anwendung in Android zu beenden?

11voto

Farruh Habibullaev Punkte 2103

Sie sollten besser die finish() wenn Sie sich in Activity ou getActivity().finish() wenn Sie sich in der Fragment .

Wenn Sie die App vollständig beenden möchten, verwenden Sie:

getActivity().finish();
System.exit(0);

10voto

bnGG Punkte 141

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.

9voto

Jerry Chong Punkte 5482

Ähnlich wie @MobileMateo, aber in Kotlin

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    this.finishAffinity()
} else{
    this.finish()
    System.exit(0)
}

9voto

Hassnain Jamil Punkte 1551

Leichte und einfache Möglichkeit, die Anwendung zu verlassen

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);

9voto

Muji Tech Punkte 21

Freunde fügen einfach diese Funktion hinzu, um ihre Anwendung programmatisch zu beenden #java

public void onBackPressed() 
{

    finishAffinity();
    System.exit(0);
}

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