Wie kann ich eine Android-Aktivität beenden, wenn ich sie verlasse, damit über die Schaltfläche "Zurück" nicht darauf zugegriffen werden kann?


130

In einer bestimmten Android-Aktivität möchte ich irgendwann eine neue Aktivität für den Benutzer starten. Sobald sie die erste Aktivität verlassen und zur zweiten gelangen, ist die erste Aktivität veraltet und ich möchte sie vollständig entfernen, damit über die Schaltfläche "Zurück" nicht mehr darauf zugegriffen werden kann.

Wie ist der beste Weg, dies zu erreichen? Wie kann ich diese Aktivität sofort beenden oder zerstören, nachdem der Benutzer die neue Aktivität gestartet hat?


Überprüfen Sie diese Antwort , es war nützlich für mich.
Daniyar

Antworten:


234

Sie müssen nur anrufen finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

Danke dir. Um noch einen Schritt weiter zu gehen, starte ich die neue Aktivität über ein Dialogfenster. Würde der Code genauso funktionieren?
JohnRock

@CaseyB danke dafür..aber ich möchte wissen, kann ich diese Methode von einem Service aus aufrufen, wenn ja, wie dann?
SwiftBoy

1
Dienste haben keine Aktivität, was bedeutet, dass sie sich nicht im Aktivitätsstapel befinden, zu dem sie zurückkehren können. Wenn Sie eine Aktivität aus Ihrem Dienst beenden möchten, sollten Sie myActivity.finish () aufrufen können.
CaseyB

3
Es ist eine 7 Jahre alte Antwort und dennoch gültig für Android M und N.
Zeeshan

1
@juztcode onDestroyist eine Lebenszyklusmethode, die nur über das Android-Framework aufgerufen werden soll.
CaseyB

106

Wenn Sie android:noHistory="true"die Aktivität in Ihrem Manifest festlegen, wird eine Aktivität vom Stapel entfernt, wenn von ihr weg navigiert wird. siehe hier



8

Sie können android:noHistory="true"Ihrem ActivityTag auch hinzufügen AndroidManifest.xml.

<activity
            ...
            android:noHistory="true">
</activity>

7

Ja, Sie müssen in jeder Aktivität, die Sie schließen möchten, nur finish () aufrufen.


4

Schreiben Sie dies in jede "neue Aktivität", nachdem Sie Ihre neue Absicht initialisiert haben->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

Endlich habe ich eine Lösung!

Mein Kontext ist : - Ich möchte die Socket-Verbindung trennen, wenn die Aktivität zerstört wurde. Ich habe versucht, die Aktivität () zu beenden, aber es hat mir nicht funktioniert Verbindung bleibt irgendwo aktiv.

Also benutze ich es, android.os.Process.killProcess(android.os.Process.myPid()); um meine Aktivität zu beenden und android:excludeFromRecents="true" um sie aus der letzten Aktivität zu entfernen.


1
Diese Lösung hat bei mir funktioniert, zeigt aber leider eine leere Seite an. Zum Schließen der Socket-Verbindung können Sie socket.close () verwenden. .
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())beendet den App-Prozess und nicht nur die Aktivität. Dies bedeutet, dass alle laufenden Dienste (Hintergrund oder Vordergrund) ebenfalls gestoppt werden.
Wrichik Basu


0

Sie müssen nur den folgenden Code verwenden, um die neue Aktivität zu starten.

startActivity(new Intent(this, newactivity.class));
finish();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.