2010-12-03 25 views
2

je le scénario suivant:getIntent retourne l'intention tort quand setIntent est suivie d'une rotation

J'ai une activité de chat, dans son intention, il obtient l'e-mail du contact pour lequel afficher les messages, l'activité a En faisant glisser mon doigt sur l'écran, je passe d'une conversation à l'autre, en appelant startActivity avec la nouvelle intention: onPause sera appelé, suivi de onNewIntent, dans lequel je place setIntent, suivi de onResume . Dans onResume, je reçois la nouvelle intention, tout va bien jusqu'ici.

Puis-je changer l'orientation: OnPause est appelée, suivie par OnDestroy, à ce stade getIntent renvoie l'intention correcte, suivie onCreate qui a l'ancienne intention, suivie onResume, qui a aussi l'ancienne intention

J'ai trouvé ceci ->http://groups.google.com/group/android-developers/browse_thread/thread/7f0389f349e1ee3b pour expliquer ce comportement mais il ne se produit pas sur mon désir de HTC avec android 2.2, en utilisant l'émulateur j'ai trouvé qu'il se produit sur 1.5, mais pas sur 1.6

Donc ma question: Est-ce normal sur 1.5? Si oui, comment puis-je changer le comportement de l'activité afin que cela ne se reproduise plus?

Je sais que je peux changer le mode de lancement de singleTop en standard mais cela affectera également Android 1.6+ que je ne veux pas parce qu'avec singleTop, le changement de conversation va vite (seulement onPause et onResume sont appelés), avec standard onCreate et onDestroy sont aussi appelés ...

Peut-être qu'il y a quelque chose que je peux faire avec les drapeaux d'intention que je n'ai pas encore trouvé, les drapeaux que je change dans le code pour que je puisse avoir un "if sdk is 3" ...

Merci pour la lecture, Danny

Répondre

2

Vous pouvez éventuellement travailler autour d'elle en remplaçant onRetainNonConfigurationInstance() et renvoyer la dernière intention, que vous pouvez ensuite récupérer en utilisant getLastNonConfigurationInstance().

+2

Merci pour la réponse, je voudrais essayer cela, mais la description de l'API de onRetainNonConfigurationInstance() dit "Cette fonction est appelée purement comme une optimisation, et vous ne devez pas compter sur son appel"; Ne comptez pas sur le fait d'être appelé partie me fait regarder/espérer une meilleure solution ... – Danny

+0

Je vais essayer votre solution car aucun meilleur n'est venu, merci! – Danny