Подтвердить что ты не робот

Как закончить приложение для Android?

Мне нужно закончить приложение для Android. Для этого я написал

@Override
public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure You want to exit")
        .setCancelable(false)
        .setPositiveButton("YES"),
        new DialogInterface.OnClickListener() {
            // On
            // clicking
            // "Yes"
            // button

            public void onClick(DialogInterface dialog,int id) {
                System.out.println(" onClick ");
                closeApplication(); // Close Application method called
            }
        })
        .setNegativeButton("NO"),
        new DialogInterface.OnClickListener() {
            // On
            // clicking
            // "No"
            // button
            public void onClick(DialogInterface dialog,int id) {
                dialog.cancel();
            }
        });

        AlertDialog alert = builder.create();
        alert.show();
    }

    private void closeApplication() {
        System.out.println("closeApplication ");
        this.finish();
    }
}

Но если какое-либо действие не завершено в приложении, когда я попытался выйти из приложения, действие которого завершено первым, и приложение не выходит... Я попытался 2 раза выйти из этого приложения... Как я могу закончить все действия в приложении, когда мне нужно выйти... или есть способ закончить все приложение

4b9b3361

Ответ 1

всякий раз, когда вы начинаете использовать новое действие

myintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myintent);

и в файле манифеста указывается, что действие

<activity android:name=".<Activity Name>" >
        <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
     <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
       </activity>

Ответ 2

Чтобы закрыть приложение, просто вызовите:

android.os.Process.killProcess(android.os.Process.myPid());

В противном случае из-за определенного жизненного цикла действий Android вы не можете быть уверены, что приложение закрыто/убито.

Ответ 3

Поместите это в свой onClick или в onBackPressed:

moveTaskToBack(true);
finish()

Ответ 4

Пожалуйста, прочитайте сначала этот пост от Google Android Developer Advocate Reto Meier: Когда включать кнопку выхода в приложениях Android (подсказка: никогда)

Что такое симптом, который заставляет вас добавить кнопку выхода? Если вам нужно очистить стек активности и всегда перезапускать с помощью определенного действия, возможно, вам просто нужно настроить объявление манифеста активности с помощью таких атрибутов, как: android: clearTaskOnLaunch

Ответ 5

Android создан таким образом, что приложение "NO", которое когда-то было открыто, закрыто.

Прежде чем неправильно интерпретировать выражение, поймите это.

"Когда вы выходите из приложения, Android сохраняет все, что делало приложение (называемое его состоянием), и подталкивает приложение в фоновом режиме, вызывая метод onStop(). Это новое состояние приложения, тогда, когда приложение не запускается, но также не вымывается из памяти. Когда вы снова запускаете приложение, оно возобновляется из замороженного состояния. Только когда память, в которой хранятся замороженные приложения, начинает заполняться, Android GC сбрасывает приложение.

Итак, концептуально ничего не выходит. когда вы нажимаете кнопку "назад", когда ур в первом действии, Android связывает приложение и данные и замерзает.

Ответ 6

У меня есть приложение с несколькими действиями. Я расширил класс Application и включил переменную numActive. Это инициализируется равным 0. В каждом действии onStart() numActive увеличивается, а в onStop() уменьшается. Если счетчик достигнет нуля, пользователь полностью оставил мое приложение и закрыл мои фоновые задачи.

Ответ 7

Бесстыдная копия ответа NeTeInStEiN, так как я нашел ее такой полезной (пожалуйста, проголосовав за его ответ): Отправка запущенного приложения на фоне программно

Вы можете использовать либо:

boolean sentAppToBackground = moveTaskToBack(true);

if(!sentAppToBackground){
  Intent i = new Intent();
  i.setAction(Intent.ACTION_MAIN);
  i.addCategory(Intent.CATEGORY_HOME);
  this.startActivity(i);
}

Дополнительная информация здесь: http://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)

Или просто:

Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);

По словам Ромена Гая, разработчика Android Framework Engine: "Вы не можете имитировать нажатие на клавишу" Домой ". Так что будьте осторожны...

Проверьте: http://osdir.com/ml/Android-Developers/2010-03/msg01887.html

Обновлен этот ответ в соответствии с: moveTaskToBack (true) всегда возвращает false

Ответ 8

согласно этому ответу,

просто напишите this.finishAffinity(); и готово!

Ответ 9

Чтобы закрыть приложение, вы также можете взять "System.exit(0)" 0 является стандартным или использовать любой код выхода.