webentwicklung-frage-antwort-db.com.de

App/Aktivität beenden/beenden - Android

Ich habe 4 Aktivitäten: Act1, Act2, Act3 und Act4..__ Eine Schaltfläche in Act1 öffnet Act2, eine Schaltfläche in Act2 öffnet Act3, eine Schaltfläche in Act3 öffnet Act4.

Ich möchte zwei Dinge tun:

  1. Ich habe eine Schaltfläche in Act4, die den Benutzer zu Act1 führt. Das Problem ist, wenn der Benutzer in Act1 zurückklickt. Ich möchte die App schließen, anstatt Act4 zu öffnen.

  2. Ich habe eine Option im Menü 'Beenden' in allen Aktivitäten, wenn der Benutzer es auswählt. Ich möchte die App schließen, anstatt zur vorherigen Aktivität zurückzukehren.

Ich habe es mit finish(); versucht, aber es entsprach nicht meinen Anforderungen.

16
kumareloaded

Verwenden Sie den folgenden Code in der Exit-Schaltfläche Ihres Act4 'th Menu.xml -

Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

In der onCreate()-Methode Ihrer ersten Aktivität fügen Sie einfach den folgenden Code ein

if (getIntent().getBooleanExtra("EXIT", false)) 
{
        finish();
}

Dadurch wird Ihre App beendet.

29
Praveenkumar

Schauen Sie sich diesen Link an:

Klick hier

Sie können verwenden:

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

in allen Aktivitäten, um die App zu schließen.

8
Krishna Suthar

beenden Sie die vorherige Aktivität, wenn Sie zur nächsten Aktivität wechseln möchten. Schreiben Sie finish(); nach startactivity(intent); und schreiben Sie den folgenden Code für den Start der ersten Aktivität aus dem vierten Klickereignis der Schaltfläche "Button".

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

Und schreiben Sie den folgenden Code auf das Click-Ereignis Ihres Exit-Buttons in allen Aktivitäten.

finish();
2
Dipak Keshariya
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Deaktivieren Sie die Markierung, bevor Sie zur vorherigen Aktivität zurückkehren. Es könnte dir helfen.

2
Prerak

Fügen Sie diesen Code in Ihre App ein:

moveTaskToBack(true);
Android.os.Process.killProcess(Process.myPid());
System.exit(1);
1
Manikumar Gouni

Verwenden Sie Android:noHistory = "true" in Ihrer AndroidManifest.xml-Datei

    <activity
        Android:name=".Act1"
        Android:noHistory="true" />
    <activity
        Android:name=".Act2"
        Android:noHistory="true" />
    <activity
        Android:name=".Act3"
        Android:noHistory="true" />
    <activity
        Android:name=".Act4"
        Android:noHistory="true" />
0
Jithin Jude

Ich verwende diese Methode:
1. Erstellen Sie in der ersten Aktivität eine statische Aktivität, die das .__ schließt. verbleibende Tätigkeit (en).
2. Rufen Sie es dann in der statischen Methode auf, so wird die App von überall aus geschlossen.

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 
0
Hakim Douib
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
0
user2955481

Mein Ansatz ist, alle untergeordneten Aktivitäten mit startActivityForResult zu starten. Dann kann ich putExtra ("STATE", some_value) beim Beenden eines beliebigen Kindes verwenden und den Zustandswert verwenden, um zu bestimmen, was durch die Eltern zu tun ist.

Wenn ich die App von einem tiefen Kind aus beenden möchte, wäre "STATE" "Exit" und jedes Kind in der Hierarchie würde einfach den StringExtra für "Exit" abrufen, ein PutExtra ("STATE", "Exit") ausführen und aufrufen finish () und dann würde die App am Ende finish () aufrufen. Damit können Sie einen beliebigen Zustand erreichen.

Die Verwendung von startActivityForResult zum Übergeben von Nachrichten auf diese Weise vermeidet, dass unbequeme Verweise an die untergeordneten Aktivitäten weitergegeben werden müssen, und vereinfacht die Einstellung des gewünschten Status der App.

0
R Earle Harris

Wenn Sie eine andere Aktivität hinter sich haben (im Anwendungsaktivitäts-Stack), können Sie mit finish() die aktuelle Aktivität beenden.

Die back-Funktion setzt jedoch auch voraus, dass die aktuelle Aktivität von Ihrem Anwendungsaktivitätsstack entfernt wird.

Nach meiner Erfahrung ist es sehr unzuverlässig, sich auf die Aktivitäten im Back-Stack (im Application-Activity-Stack) zu verlassen. Aus diesem Grund habe ich jede Aktivität beendet, wenn ich tiefer gehe.

In Ihrem Fall:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

Die obige Methode beendet alle Aktivitäten.

Wenn Sie jedoch etwas Code im Hintergrund ausführen möchten, ist es besser, sich auf einen "Dienst" als auf eine "Aktivität" zu verlassen. Sie können den "Service" beenden, nachdem Sie die zugewiesene Arbeit ausgeführt haben.

0
kalan