Как принудительно остановить приложение для Android?

Я хочу заставить остановить приложение для Android, когда я нажимаю кнопку closeButton. Это мой код.

protected void onCreate(Bundle savedInstanceState) {

  this.setContentView(R.layout.layoutxml);

  this.closeButton = (Button)this.findViewById(R.id.close);

  this.closeButton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

      finish();

    }

  });

}

Это завершает мое приложение. Если я перейду к Settings -> Applications -> Manage applications -> <my application name>, я могу увидеть, что кнопка "Силовая остановка" включена. Означает ли это, что мое приложение не было полностью остановлено?

Как я могу закончить приложение Android полностью и отключить кнопку "Force Stop" в "Настройках"? Из моего ограниченного опыта, когда в приложении появляется "Исключение" (например, NullPointerException), оно останавливается ненормально, похоже, что оно завершено полностью, и кнопка "Силовая остановка" выглядит отключенной.

Ответы

Ответ 1

Другой способ -

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

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

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

Ответ 2

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

Android ≥ 16

finishAffinity();

Android < 16

ActivityCompat.finishAffinity(Activity activity)

Надеюсь, что это поможет

Ответ 3

Плохой способ убить приложение будет System.exit(0)

Изменить: Я считаю, что должен объяснить. Android управляет жизненным циклом приложения самостоятельно, и вы не должны "принудительно закрывать" его, и я не знаю, какой хороший способ это сделать. Обычно это нормально, если ваше приложение все еще живое в фоновом режиме, таким образом, если пользователь снова запустит его, он быстро появится.

Ответ 4

Попробуйте этот код для принудительного прекращения вашего приложения...

private void QuitApplication(){

   int pid = android.os.Process.myPid();
   android.os.Process.killProcess(pid);
   Intent intent = new Intent(Intent.ACTION_MAIN);
   intent.addCategory(Intent.CATEGORY_HOME);
   startActivity(intent);

}

Счастливое кодирование...

Ответ 5

Почему бы не сделать Shell-Call для ActivityManager?

try {
      Runtime.getRuntime().exec("am force-stop com.me.myapp");
    } catch (IOException e) {
      e.printStackTrace();
    }

Ответ 6

Я знаю, что это поздний ответ, надеюсь, это поможет кому-то.

Вы можете попробовать finishAndRemoveTasks(); вместо finish(); в вашем фрагменте.

Это убило бы ваше приложение все действия и весь процесс и даже удалило для недавних приложений из диспетчера задач.

Примечание. Если в вашем коде используется какой-либо handler или thread убедитесь, что вы удалили его функциональные возможности, а затем используйте предложенный выше код, если не возникнет NullPointer Exception или ResourceNotFound Exception.