Как принудительно остановить приложение для 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
.