2010-07-08 17 views
6

Je rencontre des difficultés pour supprimer toutes les activités de la pile en utilisant Intent.FLAG_ACTIVITY_CLEAR_TOP et android: launchMode = "singleInstance".Comment effacer toutes les activités de la pile?

Dans mon activité d'application A, lance l'activité B (via startActivity) qui lance à son tour l'activité C (via startActivity). Sur l'activité C, l'utilisateur appuie sur un élément de menu pour revenir à l'activité A. Lorsqu'ils arrivent à l'activité A, je veux seulement A sur la pile de sorte que s'ils cliquent sur le bouton retour, ils retournent à l'écran d'accueil.

C'est le code que je suis actuellement en utilisant lorsque l'utilisateur appuie sur un bouton pour revenir à A:

Intent i = new Intent(this, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

Toutes les activités sont définies comme Android: launchMode = « SingleInstance » dans le manifeste projet.

Mon code ne semble pas fonctionner. Une fois que je suis de retour sur l'activité A si je clique sur le bouton de retour, je retourne à l'activité C. Suis-je en train de mal comprendre comment utiliser Intent.FLAG_ACTIVITY_CLEAR_TOP?

+0

Même moi je suis confronté à un problème similaire. Est-ce que ça a été résolu? Si oui, comment l'avez-vous fait? – EnthuDeveloper

Répondre

2

J'ai toujours trouvé que la meilleure façon de s'assurer que C serait retiré de la pile est d'appeler finish() après startActivity pour retirer C de la pile.

La documentation est lue comme si les choses se comportaient comme vous le souhaitiez, mais il semblerait que cela ne se produise pas, donc finish() s'assurera que C est supprimé.

+0

Appeler finish() supprimerait C, mais B serait toujours sur la pile. Je veux A, B, C tout dans la pile jusqu'à ce que l'utilisateur demande spécifiquement d'aller de C -> A. – Richard

+0

FLAG_ACTIVITY_CLEAR_TOP se débarrasser de B, mais de mon expérience (et il semble semblable au vôtre), il ne reçoit pas débarrasser de C. Donc si vous combinez le drapeau et l'utilisation de finish() vous devriez obtenir ce que vous voulez. –