Обнаружение включения / выключения нажатия клавиш Android - PullRequest
6 голосов
/ 27 июля 2011

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

Ответы [ 5 ]

18 голосов
/ 27 июля 2011

Из ответа Кристиана на этот вопрос :

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
        // do what you want with the power button
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Однако Джейк Базиль прав. Если у вас нет веских причин делать что-то особенное при нажатии кнопки питания, вам следует использовать стандартные функции жизненного цикла Android.

При нажатии кнопки питания он вызывает метод onPause () вашего приложения, а когда вы разблокируете устройство, он вызывает onResume (). Именно здесь вы должны управлять своим потоком, чтобы предотвратить сбой приложения.

Документация о деятельности даст вам подробное описание функций жизненного цикла, когда они вызываются и как вы должны их использовать. enter image description here

8 голосов
/ 27 июля 2011

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

Это стандартный процесс для жизненного цикла Activity в Android, который более полно задокументирован здесь .

2 голосов
/ 01 сентября 2016

Многие ответы на этот вопрос игнорируют тот факт, что при написании приложения важно знать, какое событие вызвало вызов определенной стандартной функции жизненного цикла Android.Есть функция onBackPressed ();почему бы не иметь onPowerPressed () и onHomePressed (), а также?Приложениям часто приходится выполнять разные действия в стандартных функциях жизненного цикла в зависимости от того, какое событие вызвало их вызов.Сейчас очень сложно выяснить, был ли вызван стандартный метод жизненного цикла в результате нажатия кнопки «Домой» или нажатия кнопки питания.

1 голос
/ 18 июня 2015

Чтобы определить, запускается ли приложение Android или останавливается, вы можете использовать следующие правила:

  • Когда пользователь входит, всегда вызывается onResume (для текущей активности)
  • Когда пользователь уходит, всегда вызывается onStop (при текущей активности), кроме случаев нажатия кнопки питания (для выключения), когда вы можете видеть только вызов onPause.
  • Когда пользователь перемещается между действиями, onResume всегда вызывается для нового действия, а onStop всегда вызывается для старого. Вызов onResume всегда перед onStop

Подробнее здесь: http://www.artificialworlds.net/blog/2015/06/05/detecting-whether-an-android-app-is-stopping-or-starting/

0 голосов
/ 24 июня 2016
...