4 votes

Comment empêcher les appels à onDestroy() suivis de onCreate() lorsque le bouton d'alimentation est pressé sur Android ?

J'enregistre chaque appel à onCreate() et onDestroy(). J'ai découvert qu'une fois que j'ai cliqué sur le bouton d'alimentation de mon Android (et sur l'émulateur aussi !), les appels téléphoniques dans mon activité

> onDestroy();
> onCreate();

Ce qui tue mon jeu et le rouvre immédiatement depuis le début. Bien sûr, une fois que l'utilisateur déverrouille l'écran, le jeu est présenté dans le menu principal avec toute la progression tuée.

Est-il possible d'ignorer ou de désactiver ce comportement ?

11voto

sfera Points 91

Lorsque vous appuyez sur le bouton d'alimentation, le verrouillage de l'écran est généralement activé. Cela peut déclencher un changement de configuration de l'activité actuellement au premier plan (le verrouillage de l'écran est généralement en mode portrait), entraînant sa destruction et sa recréation.

Déclarer android:configChanges="keyboardHidden|orientation" pour de telles activités dans AndroidManifest.xml empêche qu'elles soient détruites et recréées, mais implique également que vous gériez les changements de configuration par vous-même (si nécessaire) en remplaçant la fonction onConfigurationChanged

3voto

Kurtis Nusbaum Points 16073

Vous ne pouvez pas modifier le moment où le onCreate() y onDestroy() ne sont pas appelées (du moins pas sans éprouver une douleur extraordinaire). La meilleure chose à faire est de trouver comment travailler dans les limites du moment où elles sont appelées. Sauvegardez votre état dans onDestroy() . Faites en sorte que votre application puisse tolérer cette séquence d'appels parce que franchement, elle est censée/doit le faire. C'est ainsi que fonctionne Android.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X