Bonjour (ma première question ici ;-)
Il y a peut-être des questions similaires, mais aucune d'entre elles ne semble répondre à ma question ou me donner une véritable solution...
ProblèmeA
(Racine) commence B
. B
peut commencer d'autres activités. A
décide de mettre fin à la pile (perte de connexion au réseau) et de démarrer. C
. Cela semble être une décision drastique, mais l'utilisateur s'y attendrait et cela a vraiment du sens dans ce cas...
Pregunta
Comment faire ? Je m'attendrais à ce que l'on utilise un certain drapeau ou que l'on appelle simplement quelque chose comme dismissStack
. Mais je n'arrive pas à trouver le droit (voir la recherche ci-dessous).
Recherche
J'ai lu beaucoup de documentation mais les drapeaux disponibles ne correspondent pas à mes besoins (ou je n'ai pas bien compris). D'autres réponses me disent de mémoriser les activités commencées (par exemple dans un tableau) et de les terminer quand c'est nécessaire. Mais cela me semble sale et, d'une certaine manière, je ne peux pas accepter que ce soit la bonne solution. Il doit y avoir quelque chose de plus propre, j'espère !
(Le stockage de la pile me semble encore plus erroné. Votre application peut être tuée par le système, donc vos données statiques, mais votre historique sera chargé à nouveau au démarrage. Vous devriez donc conserver votre pile sauvegardée. Cela devient encore plus sale...)
Mise à jour
Mon code et ce que j'ai essayé (abstrait) :
// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);
// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);
( FLAG_ACTIVITY_CLEAR_TOP n'est pas une solution, veuillez lire la documentation...)
J'appuie Back en C
y B
apparaît toujours et est donc toujours là...
Je peux supprimer l'activité en appelant finishActivity(REQUEST_B)
. Mais lorsque B
a commencé une autre activité D
il apparaîtra toujours si je clique sur Back en C
plus tard. B
n'est plus là mais D
est toujours là...
Je suis sûr qu'il y a quelque chose que je n'ai pas encore compris ou que j'ai manqué. Quelqu'un peut-il me donner un indice ou approuver mes recherches si c'est vraiment ainsi qu'il faut procéder...