Intereting Posts
React-native на Android 4.0.3. Возможное? Как получить или вычислить ширину / высоту раздутого вида Android SDK – Media Player Видео с URL-адреса Android: сменить кнопку Button в строке ListView с помощью onClick Смутно, как использовать Mockito для тестирования Android Proguard – нерешенные ссылки на членов класса программы Класс не найден при unmarshalling: android.support.v7.widget.Toolbar $ SavedState Что считается onPageFinished в Android WebViewClient? Проблема с Android NDK r4 san-angeles Установка учетных данных в веб-обозревателе Android с использованием защищенного соединения HTTPS Как добавить информацию о профиле в ящик для Android-навигации? Можно ли аутентифицировать пользователя Google (зарегистрированного на устройстве Android) на моем сервере, используя auth_token, полученную форму Google? Ionic native-audio не работает на android Java.util.zip.ZipException: повторная запись Как отменить выполнение AsyncTask из скрытого элемента в функции getView () в Android?

Show yes / No перед выходом из приложения с помощью кнопки «Назад»

Если пользователь несколько раз нажимает кнопку «Назад», мне нужен способ определить, когда они находятся в самом последнем действии моей задачи / приложения, и показать «Вы хотите выйти?». Перед тем, как они вернутся на главный экран или все предыдущее приложение, которое они запускали.

Его достаточно легко подключить onkeypressed() , но как я могу понять, что это «последнее» действие в задаче?

Я думаю, вы можете использовать smth, как это в своей деятельности, чтобы проверить, является ли он последним:

 private boolean isLastActivity() { final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final List<RunningTaskInfo> tasksInfo = am.getRunningTasks(1024); final String ourAppPackageName = getPackageName(); RunningTaskInfo taskInfo; final int size = tasksInfo.size(); for (int i = 0; i < size; i++) { taskInfo = tasksInfo.get(i); if (ourAppPackageName.equals(taskInfo.baseActivity.getPackageName())) { return taskInfo.numActivities == 1; } } return false; } 

Это также потребует добавления разрешения на ваш AndroidManifest.xml:

 <uses-permission android:name="android.permission.GET_TASKS" /> 

Таким образом, в вашей Activty вы можете просто использовать следующее:

 public void onBackPressed() { if (isLastActivity()) { showDialog(DIALOG_EXIT_CONFIRMATION_ID); } else { super.onBackPressed(); // this will actually finish the Activity } } 

Затем в диалоговом окне youd Dialog нажмите кнопку, чтобы вызвать Activity.finish ().

Просмотрите Основы Android-приложений , это нарушает продвинутое поведение приложения для Android:

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

Афайк, нет.

Есть несколько флагов, которые вы можете использовать, чтобы влиять на стек истории, но все в вашем приложении. Попробуйте эти флаги с вашим намерением:

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

FLAG_ACTIVITY_NO_HISTORY

FLAG_ACTIVITY_REORDER_TO_FRONT

FLAG_ACTIVITY_SINGLE_TOP