Как закрыть приложение Android полностью

Я создал приложение для Android с параметром выхода из системы в onCreateOptionsMenu. Выход из системы работает отлично, но когда я снова нажимаю кнопку "Назад" , он возвращает меня к предыдущему действию, и когда он получает нулевое значение, он перенаправляется на экран входа в систему. Теперь мой экран входа появляется снова и снова. Я хочу полностью закрыть приложение, когда я нажимаю кнопку "Назад" , но не знаю, как это сделать.

Вот мой код для обращения к кнопке "Назад" на экране входа в систему:

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("BidNEMO")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(android.R.string.no, null)
        .setPositiveButton(android.R.string.yes, new OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {
         Main.super.onBackPressed();
         finish();
         }
         }).create().show();
     }

Пожалуйста, помогите ребятам..

Ответ 1

В Quit Application на кнопке щелкните этот код:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

Попробуйте.

Чтобы убить полное приложение и удалить его из списка приложений Running, запустите приложение через его pid (его противный)... используйте эти строки перед кодом выше.

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);

Ответ 2

Если вы хотите полностью закрыть приложение, вы должны использовать finishAffinity(); вместо finish(). Он очистит весь стек действий, ранее открытых приложением.

Ответ 3

Завершить работу Я использую этот код:

public void appExit () {
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}  //close method

или уничтожить процесс с помощью этого кода:

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);

Ответ 4

Для пользователей Xamarin:

int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);

поместите его в свою OnDestroy() функцию.

Edit

После тщательного изучения этого вопроса выяснилось, что даже приведенный выше код не полностью "убивает" приложение (удаляя его из диспетчера задач - "последние приложения" ). В конце концов, после многих попыток кода мне удалось что-то понять, переопределив функции "Finish" с помощью этого кода:

public override void Finish()
    {
        if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
            base.FinishAndRemoveTask();
        }
        else
        {
            base.Finish();
        }
    }

это единственное решение для этого вопроса!

Ответ 5

Даже если это выглядит нормально, процесс убийства вызовет головную боль в будущем. Вы можете обеспечить это, используя прецедент:

  • вызов нескольких действий для заполнения стека действий
  • вызов android.os.Process.killProcess(pid);
  • откройте приложение

НАБЛЮДЕННОЕ. Ваше приложение открывается не из основного действия непоследовательным способом. Это связано с тем, что Android рассматривает возможность убийства процесса, например, сбоя.

Более подробную информацию вы можете найти здесь: Отказался от приложения, на которое отказались?

Ответ 6

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

Я думаю, что это лучше. Как насчет этого?