2011-06-19 5 views
1

J'ai donc écrit une application qui a une activité principale (A), et diverses autres sous-activités qui font toutes quelque chose, rapportent le travail à la main et finissent. Ce que je rencontre, c'est que si l'utilisateur quitte mon application sur les écrans B ou C, quand ils reviennent plus tard et dalvik a détruit mes activités pour plus de RAM ... l'application commence à B ou C, et lit toutes les choses d'initialisation de l'intention enregistrée, et continue comme si rien ne s'était passé. Jusqu'à ce qu'ils reviennent à l'activité A, où nous obtenons une force proche de choses inattendues.Android - Dire si l'activité des parents a été détruite

Je me suis tourné vers onStop() et j'ai terminé la partie, mais je pense que c'est un peu la terre brûlée, je voudrais les laisser partir pour cette activité et revenir. Mais j'aimerais aussi détecter si l'activité principale sous-jacente a été détruite, puis détruire toute ma pile d'activité. De lecture, j'ai l'idée que onDestroy() n'est pas toujours appelée, donc il n'est pas fiable pour moi d'insérer de la logique dans l'onDestroy de l'Activité A. Des idées?

Répondre

0

Essayez de démarrer vos sous-activités B et C avec le drapeau FLAG_ACTIVITY_NO_HISTORY.

+0

Intéressant, je n'ai pas joué avec des drapeaux d'intention auparavant. Ils semblent juste reproduire la fonctionnalité de redéfinir 'onStop' de B et C (terre brûlée), mais ils retournent des retours nuls sur' onActivityResult' de l'activité principale que je pourrais capturer pour la persistance .... Je vais bricoler avec d'autres drapeaux qui semblent prometteurs et rendre compte. – Eric

+1

Je ne pouvais toujours pas le faire fonctionner comme imaginé, mais j'ai appris beaucoup de choses sur les drapeaux d'intention dans le processus, donc je le marque comme correct. J'ai fini par aller sur la route de la terre brûlée (override onStop, appel 'finish();') parce que laisser mes données dans un état incohérent n'était pas acceptable. – Eric

Questions connexes