Это уже какое-то время сводит меня с ума.
Есть ли способ надежно определить, была ли нажата кнопка «Домой» в приложении для Android?
Если это не так, есть ли надежный способ узнать, что заставило действие перейти в onPause? То есть можем ли мы определить, было ли это вызвано запуском нового действия или нажатием кнопки возврата / возврата.
Одно из предложений, которое я видел, - переопределить onPause () и вызвать isFinishing (), но это вернет false при нажатии кнопки домой, как если бы это было, если бы запускалась новая активность, поэтому это не позволяет различить два.
Любая помощь очень ценится.
** Обновление **: спасибо @ android-hungry за эту ссылку: https://nishandroid.blogspot.com/ а>
Преодоление следующего метода:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Тогда следующее событие БУДЕТ запускаться при нажатии кнопки «Домой»:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Я не уверен, есть ли у этой строки какие-либо побочные эффекты:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Таким образом, может показаться, что вопреки распространенному мнению, на самом деле вы можете прослушать домашний ключ. К сожалению, вы можете вернуть false, и домашний ключ ничего не сделает.
Обновление. Как и ожидалось, это имеет некоторые побочные эффекты - кажется, что встроенные видео и карты Google не отображаются в этом режиме.
Обновление: предположительно, этот хакерский метод больше не работает, начиная с Android 4.0.
Activity.onUserLeaveHint()
. - person harism   schedule 16.01.2012