правильный способ завершить работу приложения

#android #exit

#Android #выход

Вопрос:

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

 this.finishAffinity();
  

Однако после завершения работы моего приложения я вижу в диспетчере приложений, что в моем приложении все еще включена stop кнопка.Означает ли это, что приложение все еще запущено?Более того, Android Studio считает, что приложение тоже запущено.
Если я завершу приложение с помощью этого кода:

    this.finish();
   System.exit(0);
  

Android Studio рассматривает приложение как завершенное, но диспетчер приложений по-прежнему показывает включенную кнопку остановки.
Я прочитал, что вызов System.exit — это неподходящий способ завершения приложения.
Какой правильный?

Ответ №1:

Короче говоря, не беспокойтесь об этом.

Вы должны выполнить проверки, чтобы убедиться, что вы не пропускаете контекст, но в целом вам не нужно беспокоиться о том, что ваше приложение остается «активным».

Это просто означает, что оно еще не было полностью завершено, потому что Android не нужно было этого делать. До тех пор он частично поддерживает его работоспособность, чтобы иметь возможность быстро вернуть его обратно, если пользователь захочет его снова.

Для его поддержания не требуется никаких дополнительных ресурсов обработки. Только немного памяти. Когда Android сочтет необходимым запросить ресурсы, это полностью остановит ваше приложение.

Просто продолжайте использовать finish(); .

Жизненный цикл Android:

Жизненный цикл Android

Комментарии:

1. Спасибо! Запустит ли Android мое приложение с нуля в случае, если он решит вернуть его обратно? Я имею в виду, должен ли я освободить все ресурсы перед finish ()?

2. Это запустит ваше приложение практически с нуля. В ответе я опубликую изображение для жизненного цикла. Вы можете использовать onSaveInstanceState(Bundle) и onRestoreInstanceState(Bundle) для того, чтобы вернуться к своему предыдущему состоянию: developer.android.com/training/basics/activity-lifecycle /…

Ответ №2:

Если вы не хотите, чтобы ваше приложение отображалось на экране обзора после завершения работы, просто добавьте тег android:autoRemoveFromRecents="true" to your activity в манифест. Нет необходимости использовать System.exit(0) .

Комментарии:

1. Проблема не в том, что его нет в списке последних приложений. Проблема в том, что диспетчер приложений (в настройках Android) и Android Studio считают, что приложение все еще запущено

Ответ №3:

Для выхода из приложения по нажатию кнопки используйте этот код :

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

Попробуйте..

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

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

Ответ №4:

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

 public void EXIT(View view) 
{
    finish();
}
  

Ответ №5:

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