2013-06-23 9 views
3

J'ai une application qui est une activité.Confusion sur le cycle de vie de l'activité Android

Tout fonctionne comme je m'attendais, sauf quand je mets le téléphone (un Samsung Galaxy Ace en cours d'exécution Gingerbread) pour dormir avec le bouton sur le côté. Lorsque je fais cela, les éléments suivants sont appelés (dans cet ordre):

onPause, onStop, onDestroy, onCreate, onStart, onResume, onPause.

Ceci est sans réveiller le téléphone, il est encore endormi - l'écran est éteint. Pourquoi l'activité est-elle complètement tuée et recréée? Pourquoi?

Encore plus bizarre, si le téléphone est rallumé ce qui suit se produit:

onResume, OnPause, onStop, onDestroyed, onCreate, onStart, onResume

Même si elle est « prêt à aller "(assis sur la pause), il est tué et recréé à nouveau.

Si l'application est en cours d'exécution et que j'appuie sur Accueil alors l'activité est seulement arrêtée, pas tuée, une fois arrêtée, je peux alors mettre le téléphone en veille puis le réveiller et l'activité n'est jamais tuée. Il va juste à onRestart etc ... qui est ce que je m'attendais.

Ce problème se produit uniquement lorsque le téléphone est mis en veille pendant que l'activité est en cours d'exécution (et au premier plan).

J'ai lu les documents sur le cycle de vie des activités mais je n'arrive pas à comprendre pourquoi ce problème se produit.

+2

Avez-vous vu ceci plusieurs fois? Je me demande si vous avez accidentellement incliné le téléphone pour provoquer un changement d'orientation lorsque vous l'avez éteint, ce qui a ensuite été traité avant que le téléphone se mette en veille. Cela causerait exactement ce que vous avez vu. – HexAndBugs

+0

Salut @flightplanner, merci pour le commentaire, je l'ai essayé plusieurs fois - il arrive à chaque fois. Aussi, j'ai également essayé de tenir le téléphone stable dans les orientations horizontales et verticales en faisant cela en faisant très attention de ne pas incliner le téléphone. – Zippy

+0

Votre orientation 'Activity' est-elle définie sur' landscape' uniquement? –

Répondre

7

J'ai le même comportement sur un autre appareil Samsung lorsque le Activity doit être affiché en mode paysage (défini dans AndroidManifest.xml). Cela se produit parce que l'écran de verrouillage de l'appareil est forcé d'être affiché en mode portrait et lorsqu'il est devant votre application, il force votre haut niveau Activity en mode portrait.

Ce n'est rien de s'inquiéter et aussi rien que vous pouvez changer.

+0

Fantastique - merci @ MaciejGórski, je force en effet mon activité en mode paysage dans le Manifeste, c'est énervant quand l'application repart de zéro (directement depuis l'écran de chargement) alors que sur d'autres appareils elle reprend juste là où elle est partie de. Merci au moins, je sais ce qui le cause, ça me rendait fou! :-) – Zippy