Comments 12
Для такого отлавливаю нажатия по Back и в зависимости от текущей Activity что-то делаю:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//что-то делаем: завершаем Activity, открываем другую и т.д.
}
return super.onKeyDown(keyCode, event);
}
Я не хожу обсуждать, на сколько это хорошо или плохо. Единственное замечу, что для отлавливания Back у Activity есть метод onBackPressed()
Есть. Просто, чтобы отловить другие нажатия, onKeyDown всё равно придётся использовать.
Поэтому я переопределяю всегда только onKeyDown, а там уже switch использую.
Я ничего против статьи не хотел сказать, просто, так сказать, как альтернативу показал)
Поэтому я переопределяю всегда только onKeyDown, а там уже switch использую.
Я ничего против статьи не хотел сказать, просто, так сказать, как альтернативу показал)
А вот нажатие на кнопку Home данный метод не отрабатывает
if (keyCode == KeyEvent.KEYCODE_HOME) {
Log.w(TAG, «KEY HOME PRESSED!»);
}
if (keyCode == KeyEvent.KEYCODE_HOME) {
Log.w(TAG, «KEY HOME PRESSED!»);
}
Если мне память не изменяет, то в Android с Home совсем другая история. Home гарантированно даёт возможность выйти из приложения. Поэтому в целях безопасности сложно её отловить, если вообще возможно.
Нельзя, так же, как и power button. Из соображений безопасности и энергопотребления.
Для Home есть хитрый хак — просто ставить себя приложению как Home-приложение
Это не хак.
Объявив себя ланчером вы все так же не можете перехватывать кнопку Home.
И если не выбран ланчер по умолчанию, всегда будет отображаться диалог выбора приложения рабочего стола.
Суммирую: для простого приложения (не ланчер или киоск апп), которое бы хотело узнать когда хотя бы просто нажата кнопка «домой», такой вариант не подходит.
Объявив себя ланчером вы все так же не можете перехватывать кнопку Home.
И если не выбран ланчер по умолчанию, всегда будет отображаться диалог выбора приложения рабочего стола.
Суммирую: для простого приложения (не ланчер или киоск апп), которое бы хотело узнать когда хотя бы просто нажата кнопка «домой», такой вариант не подходит.
есть же onUserLeaveHint()
FLAG_ACTIVITY_NEW_TASK — запускает Activity в новом таске. Если уже существует таск с экземпляром данной Activity, то этот таск становится активным, и срабатываем метод onNewIntent().
Флаг аналогичен параметру singleTop описанному выше
Возможно имеется ввиду «Флаг аналогичен параметру singleTask описанному выше».
Я могу ошибаться, но разве при долгом неиспользовании таска, таск очищается? Могут Activity завершится, но таск вроде сохраняется, а решение об очищении происходит на основании времени: т.е. прошло N-е количество времени и таск считается abandon и уже тогда чистится.
Насколько я помню, и это поведение можно переопределить, поставив флаг на корневой activity «android:alwaysRetainTaskState».
Насколько я помню, и это поведение можно переопределить, поставив флаг на корневой activity «android:alwaysRetainTaskState».
Sign up to leave a comment.
Tasks и Back Stack в Android