423 Stimmen

Beende alle vorherigen Aktivitäten

Meine Anwendung hat die folgenden Ablaufbilder:

Home->screen 1->screen 2->screen 3->screen 4->screen 5

Jetzt habe ich eine gemeinsame log out Schaltfläche in jedem Bildschirm

( Home/ screen 1 / screen 2 /screen 3/ screen 4 / screen 5 )

Ich möchte, dass, wenn der Benutzer auf die Schaltfläche "Abmelden" (von einem beliebigen Bildschirm) klickt, alle Bildschirme beendet werden und ein neuer Bildschirm Log in wird geöffnet.

Ich habe fast alle ausprobiert FLAG_ACTIVITY um dies zu erreichen. Ich gehe auch durch einige Antworten in Stackoverflow, aber nicht in der Lage, das Problem zu lösen. Meine Anwendung ist auf Android 1.6 so nicht in der Lage zu verwenden FLAG_ACTIVITY_CLEAR_TASK

Gibt es eine Möglichkeit, das Problem zu lösen?

0voto

Shivam Tripathi Punkte 610

Der beste Weg, um alle vorherigen Aktivitäten zu beenden und den Speicher zu löschen

finishAffinity()
System.exit(0);

0voto

MosesK Punkte 319

Ich habe die Flaggen auf meiner Seite ausprobiert, aber es hat immer noch nicht funktioniert. Ich habe eine Anwendung mit einem sehr ähnlichen Design und ich habe eine mögliche Lösung in Bezug auf die Logik. Ich habe meine Login und Logout mit gemeinsamen Einstellungen gebaut.

Wenn ich mich abmelde, werden die Daten in meinen gemeinsamen Einstellungen zerstört/gelöscht.

In einer meiner Aktivitäten wie Home.java prüfe ich, ob die gemeinsam genutzten Einstellungen Daten enthalten, und in diesem Fall sind sie es nicht, weil ich sie zerstört habe, als ich mich von einem der Bildschirme abgemeldet habe. Daher zerstört/beendet die Logik diese Aktivität und bringt mich zurück zur Aktivität Anmelden. Sie können diese Logik in all Ihren anderen Aktivitäten wiederholen.

Denken Sie jedoch daran, diese Prüfung innerhalb von onPostResume() durchzuführen, da diese Funktion aufgerufen wird, wenn Sie zu Home.java zurückkehren

Unten stehendes Codebeispiel:

@Override
protected void onPostResume() {
    SharedPreferences pref = this.getSharedPreferences("user_details", Context.MODE_PRIVATE);
    if (pref.getAll().isEmpty()){
        //Shared Preferences has no data.
        //The data has been deleted
        Intent intent = new Intent(getApplicationContext(), Login.class);
        startActivity(intent);
        finish();
        //Finish destroys that activity which in our case is the Home.java
    }

    super.onPostResume();
}

-1voto

Mori Punkte 901

Unter Kotlin auf diese Weise:

in einer anderen Aktivität (mit einigen Klassen), unter Imports

var activity:Activity?=null
    get() = field
    set(value) {
        field = value
    }

Dann, unter onCreate

activity=this

in MainActivity jetzt:

activity?.finish()

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