Toutes les activités de mon application nécessitent qu'un utilisateur soit connecté pour voir. Les utilisateurs peuvent se déconnecter de presque toutes les activités. C'est une exigence de l'application. À tout moment, si l'utilisateur se déconnecte, je veux envoyer l'utilisateur à la connexion Activity
. À ce stade, je veux que cette activité se trouve au bas de la pile d'historique afin que le fait d'appuyer sur le bouton "retour" ramène l'utilisateur à l'écran d'accueil d'Android.
J'ai vu cette question posée à différents endroits, toutes ont répondu avec des réponses similaires (que je décris ici), mais je veux la poser ici pour recueillir des commentaires.
J'ai essayé d'ouvrir l'activité de connexion en définissant ses Intent
indicateurs FLAG_ACTIVITY_CLEAR_TOP
qui semblent faire comme indiqué dans la documentation, mais n'atteint pas mon objectif de placer l'activité de connexion au bas de la pile d'historique et d'empêcher l'utilisateur de revenir en arrière aux activités enregistrées précédemment. J'ai également essayé d'utiliser android:launchMode="singleTop"
pour l'activité de connexion dans le manifeste, mais cela n'atteint pas mon objectif non plus (et semble n'avoir aucun effet de toute façon).
Je crois que je dois effacer la pile d'historique ou terminer toutes les activités précédemment ouvertes.
Une option consiste à demander à chaque activité de onCreate
vérifier l'état de connexion et, finish()
si elle n'est pas connectée. Je n'aime pas cette option, car le bouton de retour sera toujours disponible pour une utilisation, en revenant à la fermeture des activités.
L'option suivante consiste à conserver une LinkedList
référence à toutes les activités ouvertes qui est accessible statiquement de partout (peut-être à l'aide de références faibles). Lors de la déconnexion, j'accéderai à cette liste et parcourrai toutes les activités précédemment ouvertes, en invoquant finish()
chacune d'entre elles. Je vais probablement commencer à implémenter cette méthode bientôt.
Je préfère cependant utiliser une Intent
supercherie de drapeau pour y parvenir. Je serais plus que ravi de constater que je peux répondre aux exigences de mon application sans avoir à utiliser l'une des deux méthodes décrites ci-dessus.
Existe-t-il un moyen d'y parvenir en utilisant Intent
ou en manifestant des paramètres, ou ma deuxième option, maintenir une LinkedList
des activités ouvertes est-elle la meilleure option? Ou existe-t-il une autre option que je néglige complètement?