Intereting Posts
Ввести событие движения через окно? Должны ли мы использовать setTargetFragment ()? Я думал, что Фрагменты не должны общаться друг с другом Какой stretchMode использовать в GridView на android Размер изображения (drawable-hdpi / ldpi / mdpi / xhdpi) Android Studio на аппаратном обеспечении, не поддерживающем технологию виртуализации Использование ValueAnimator для того, чтобы TextView мигал разными цветами Сервер разработки вернул код ошибки ответа: 500 в ответном нативном Загрузка / переопределение пользовательских классов для Android-классов Как получить refreshToken при использовании GoogleAuthUtil Как я могу получить данные определенного месяца из базы данных SQLite Android SQLite – новая таблица VS. Новая БД Listview с заголовком заголовка раздела Как наблюдать изменение контента? андроид Android удаляет кнопки Fastforward и rewind из медиаплеера В чем разница между андроидом: высота и андроид: layout_height?

Android: Как определить, будет ли кнопка «Назад» выйти из приложения (т. Е. Это последнее действие, оставшееся в стеке)?

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

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

Благодарю.

Solutions Collecting From Web of "Android: Как определить, будет ли кнопка «Назад» выйти из приложения (т. Е. Это последнее действие, оставшееся в стеке)?"

Reddit – забавное приложение делает это , переопределяя метод onKeyDown :

public boolean onKeyDown(int keyCode, KeyEvent event) { //Handle the back button if(keyCode == KeyEvent.KEYCODE_BACK && isTaskRoot()) { //Ask the user if they want to quit new AlertDialog.Builder(this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle(R.string.quit) .setMessage(R.string.really_quit) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //Stop the activity finish(); } }) .setNegativeButton(R.string.no, null) .show(); return true; } else { return super.onKeyDown(keyCode, event); } } 

Библиотека droid-fu делает это, проверяя стек запущенных задач и видя, является ли следующая задача домашним экраном Android. См. handleApplicationClosing на странице https://github.com/kaeppler/droid-fu/blob/master/src/main/java/com/github/droidfu/activities/BetterActivityHelper.java .

Тем не менее, я бы использовал этот подход только в крайнем случае, так как он довольно хакерский, не будет работать во всех ситуациях и требует дополнительных разрешений для получения списка запущенных задач.