Mon application a de nombreuses activités qui peuvent être appelées dans un ordre quelconqueComment effacer toutes les activités dans l'application Android
Exemple Histoire Activité: A -> B -> C -> D -> A -> B -> E
Maintenant, dans l'activité E, je désinscris l'appareil (déconnecte l'utilisateur et efface toutes les données qu'il aurait pu télécharger sur sa carte SD). Le comportement de désir est que l'application «recommence» et que l'utilisateur soit invité à une activité de connexion et que le retour de l'utilisateur renvoie l'utilisateur à l'écran d'accueil. Donc, maintenant, l'activité E doit effacer la pile d'activité d'une certaine manière. Actuellement, je mets FLAG_ACTIVITY_CLEAR_TOP lors du lancement de l'intention de A à partir de E. Le problème est que lorsque l'utilisateur a visité A et est allé aux activités intermédiaires et revisité A avant d'aller à E, il y a toujours des activités sur la pile.
A -> B -> C -> D -> A
Ainsi, l'utilisateur a été déconnecté et ne peut pas utiliser les activités BD, mais si l'utilisateur frappe de retour de l'activité A, ils peuvent accéder à des activités BD. Existe-t-il un moyen simple d'effacer toutes les activités autres que l'activité de connexion de la pile?
Mise à jour:
J'ai essayé de mettre à jour mon BaseActivity (chaque activité dans mes sous-classes d'application celui-ci) pour contenir un isDeregistering drapeau statique qui indique l'activité de se détruire si elle est vraie. Le problème est, chaque activité appelle finish(), et je suis démarré à l'écran d'accueil et ne peut pas redémarrer l'application avant de fermer l'application. Y a-t-il une meilleure manière de faire cela?
C'est bizarre, en lisant les docs sur FLAG_ACTIVITY_CLEAR_TOP, il dit: Par exemple, considérons une tâche composée des activités: A, B, C, D. Si D appelle startActivity() avec un Intention qui résout le composant de l'activité B, alors C et D seront terminés et B recevra l'intention donnée, ce qui fait que la pile est maintenant: A, B. ce qui semble signifier que si vous commencez une intention de A avec ce drapeau, tous les intermédiaires les activités devraient être terminées ... – I82Much
Oui, c'est le comportement, seule l'activité A est dans la pile deux fois. Lorsque la pile est effacée, elle disparaît entre l'activité d'appel et la première instance de l'activité de réception, et donc tout ce qui reste entre les deux instances de l'activité A reste sur la pile. – danh32