2010-12-15 76 views
5

J'ai joué avec les états toute la journée essayant de comprendre pourquoi, quand j'appuie sur le bouton d'alimentation pour faire apparaître l'écran de verrouillage, mon application perd le focus et appelle onStop() (comme il se doit) mais il appelle à nouveau onStart() avant que l'écran ne s'éteigne. Cela me cause un problème parce que certains sons de mon application (et vraisemblablement d'autres choses) recommencent à jouer pendant que le lockscreen est actif. Comment puis-je m'assurer qu'il est correctement décoré et arrêté lorsque l'écran de verrouillage est actif?Android, l'application a redémarré après le démarrage de l'écran de verrouillage

Répondre

7

J'ai fait face à ce problème précis il n'y a pas longtemps. En AndroidManifest.xml, assurez-vous que vous avez ceci:

android: configChanges = "keyboardHidden | orientation"

Cela empêchera votre activité d'être redémarré sur 'exécution des modifications de configuration. See handling the configuration change yourself. De cette façon, votre application va écouter les événements qui provoqueraient un redémarrage - comme l'orientation et les changements de visibilité du clavier - et les gérer au sein de votre activité.

Il y a aussi une question très similaire sur le SO ici: Activity restart on rotation Android

+1

Vous êtes un merci de sauver la vie! J'ai vu cette option ce matin quand je regardais ma fenêtre ayant des problèmes de perte d'orientation, et je l'ai ignoré. Merci encore! – Hamid

+1

Citant de la documentation liée, "Cette technique doit être considérée comme un dernier recours et n'est pas recommandée pour la plupart des applications." – CommonsWare

+0

La nature de mon application signifie qu'elle doit toujours être en mode paysage, indépendamment de tout autre facteur et sans exception. En tant que tel, je pense que c'est une solution acceptable, et m'aide en fait à résoudre un problème secondaire en verrouillant mon application en mode paysage, même entre les commutateurs d'activité. – Hamid