Как предотвратить вызовы onDestroy (), а затем onCreate () при нажатии кнопки питания на Android - PullRequest
4 голосов
/ 29 ноября 2011

Я регистрирую каждый вызов onCreate () и onDestroy (). Я обнаружил, что как только я нажимаю кнопку питания на моем Android (и на эмуляторе тоже!), Телефонные звонки в моей активности

> onDestroy();
> onCreate();

Который убивает мою игру и сразу же открывает ее заново с самого начала. Конечно, как только пользователь разблокирует экран, игра отображается в главном меню, и все успехи убиты.

Можно ли переопределить или отключить это поведение?

Ответы [ 2 ]

11 голосов
/ 25 июня 2012

Когда вы нажимаете кнопку питания, обычно срабатывает блокировка экрана. Это может вызвать изменение конфигурации действия, находящегося в данный момент на переднем плане (блокировка экрана обычно находится в портретном режиме), что приведет к его разрушению и воссозданию.

Объявление android:configChanges="keyboardHidden|orientation" для таких действий в AndroidManifest.xml предотвращает их уничтожение и воссоздание, но также подразумевает, что вы будете обрабатывать изменения конфигурации самостоятельно (при необходимости) путем переопределения onConfigurationChanged

3 голосов
/ 29 ноября 2011

Вы не можете переопределить, когда вызываются методы onCreate() и onDestroy() (по крайней мере, без сильной боли). Лучшее, что вы можете сделать, - это выяснить, как работать в пределах того времени, когда их вызывают. Сохраните ваш штат в onDestroy(). Сделайте так, чтобы ваше приложение могло терпеть эту последовательность вызовов, потому что, откровенно говоря, оно должно / должно. Вот как работает андроид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...