Für alle Aktivitäten in meiner Anwendung muss ein Benutzer angemeldet sein, um sie anzeigen zu können. Benutzer können sich von fast jeder Aktivität abmelden. Dies ist eine Anforderung der Anwendung. Wenn sich der Benutzer abmeldet, möchte ich den Benutzer jederzeit zum Login senden Activity
. An dieser Stelle möchte ich, dass diese Aktivität am Ende des Verlaufsstapels angezeigt wird, sodass der Benutzer durch Drücken der Schaltfläche "Zurück" zum Startbildschirm von Android zurückkehrt.
Ich habe gesehen, dass diese Frage an verschiedenen Stellen gestellt wurde, die alle mit ähnlichen Antworten beantwortet wurden (die ich hier skizziere), aber ich möchte sie hier stellen, um Feedback zu sammeln.
Ich habe versucht, die Anmeldeaktivität zu öffnen, indem ich ihre Intent
Flags gesetzt habe, FLAG_ACTIVITY_CLEAR_TOP
die wie in der Dokumentation beschrieben zu funktionieren scheinen, aber mein Ziel, die Anmeldeaktivität am unteren Rand des Verlaufsstapels zu platzieren und den Benutzer daran zu hindern, zurück zu navigieren, nicht erreicht zu zuvor gesehenen angemeldeten Aktivitäten. Ich habe auch versucht, android:launchMode="singleTop"
die Anmeldeaktivität im Manifest zu verwenden, aber dies erreicht auch nicht mein Ziel (und scheint sowieso keine Wirkung zu haben).
Ich glaube, ich muss entweder den Verlaufsstapel löschen oder alle zuvor geöffneten Aktivitäten beenden.
Eine Möglichkeit besteht darin, den Anmeldestatus jeder Aktivität zu onCreate
überprüfen und, finish()
falls nicht, angemeldet zu sein. Diese Option gefällt mir nicht, da die Schaltfläche "Zurück" weiterhin zur Verfügung steht und zurück navigiert, wenn sich die Aktivitäten schließen.
Die nächste Option besteht darin, LinkedList
Verweise auf alle offenen Aktivitäten zu verwalten, auf die von überall aus statisch zugegriffen werden kann (möglicherweise unter Verwendung schwacher Verweise). Beim Abmelden werde ich auf diese Liste zugreifen und alle zuvor geöffneten Aktivitäten durchlaufen, wobei finish()
jede aufgerufen wird. Ich werde wahrscheinlich bald mit der Implementierung dieser Methode beginnen.
Ich würde jedoch lieber einige Intent
Flaggen-Tricks anwenden, um dies zu erreichen. Ich würde mich sehr freuen zu sehen, dass ich die Anforderungen meiner Anwendung erfüllen kann, ohne eine der beiden oben beschriebenen Methoden anwenden zu müssen.
Gibt es eine Möglichkeit, dies durch Verwendung Intent
oder Manifestieren von Einstellungen zu erreichen, oder ist meine zweite Option, eine LinkedList
der geöffneten Aktivitäten beizubehalten, die beste Option? Oder gibt es eine andere Option, die ich völlig übersehen habe?