Intereting Posts
Как открыть почтовый ящик по умолчанию из кода Android? Уязвимость Android Inbuild (ActionImageCapture) возвращает нулевой смысл. Невозможно передать результат {who = null} Реализация Parcelable Class, требующая контекста Как обрабатывать исключения MonoDroid во всех случаях и предотвращать крах приложения Лучший способ реализовать View.OnClickListener в android Android Studio: Ice Cream Sandwich (уровень API 15) Конфигурация устройства не отображается, даже если установлен системный образ Как Dagger 2 упрощает тестирование на Android? Android L FAB Button shadow Не удалось создать конвертер для java.util.List Retrofit 2.0.0-beta2 Могу ли я получить контрольный тест, чтобы убить и перезапустить процесс приложения? Переключатель большого пальца перекошен? Как RecyclerView ItemTouchHelper блокирует салфетки? Как могут мои права доступа на уровне доступа к приложениям на непривязанных устройствах? Как указать конкретные ссылки RTL Как программно включить автозапуск на устройствах Lenovo и как найти, какой телефон необходимо использовать для автоматического запуска кода?

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 .

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