Я нашел некоторые коды для выхода из приложения Android программно. Вызов любого из следующего кода в onDestroy () полностью закроет приложение?
System.runFinalizersOnExit(true)
(ИЛИ)android.os.Process.killProcess(android.os.Process.myPid());
Я не хочу запускать приложение в фоновом режиме после нажатия кнопки «Выйти». Просьба предложить мне использовать любой из этих кодов для выхода из приложения? Если да, то какой код я могу использовать? Это хороший способ выйти из приложения в Android?
Ответы:
Начиная с API 16, вы можете использовать метод finishAffinity, который, кажется, довольно близок к закрытию всех связанных действий по его имени и описанию Javadoc:
Начиная с API 21 вы можете использовать очень похожую команду
источник
System.exit(0);
. Спасибо за ваш ответ! Наконец-то я нашел достойное решение.System.exit(0)
это единственное решение, которое сработало для меня.это лучший способ выйти из приложения. !!!
Лучшее решение для меня.
источник
System.exit(0);
. Правильное решение было опубликовано @sivi (его ответ выше)finishAffinity();
System.exit(0);
Если вы будете использовать только
finishAffinity();
безSystem.exit(0);
приложения, оно будет закрыто, но выделенная память будет по-прежнему использоваться вашим телефоном, поэтому ... если вы хотите, чтобы приложение было чистым и действительно вышло, используйте их оба.Это самый простой метод, который работает где угодно, выйдите из приложения по-настоящему, у вас может быть много открытых действий, и все будет без проблем.
пример по нажатию кнопки
или если вы хотите что-то приятное, например, с диалоговым окном предупреждения с 3 кнопками ДА НЕТ и ОТМЕНА
источник
System.exit(0);
Вы не должны освобождать эту память, система сделает это за вас, если потребуется. Это предполагаемое поведение.Пожалуйста, подумайте над тем, нужно ли вам убить приложение: почему бы не позволить ОС выяснить, где и когда освободить ресурсы?
В противном случае, если вы абсолютно уверены, используйте
Как реакция на комментарий @dave Appleton: во-первых, прочитайте большой комбо-вопрос @gabriel, опубликованный: « Не одобряется ли выход из приложения?
Теперь, предполагая, что у нас это есть, вопрос здесь по-прежнему имеет ответ: код, который вам нужен, если вы что-то делаете с выходом - это
finish()
. Очевидно, что вы можете иметь более одного вида деятельности и т. Д., Но это не главное. Позволяет управлять некоторыми из вариантов использованияТак что, в конце концов, конечно,
finish()
не убивает все, но это все еще инструмент, который вам нужен, я думаю. Если есть вариант «убить все действия», я его еще не нашел.источник
finish()
не убьет приложение.finish()
используется постоянно:Call this when your activity is done and should be closed.
это тот же эффект, что и нажатие кнопки «назад».Activity
(а неApplication
). Например, вы можете начать новое действие, чтобы показать пользователю некоторую информацию. После тайм-аута или нажатия «ОК» вы можете позвонить,finish()
чтобы вернуться к операции вызова.Я думаю, что приложение должно быть убито в некоторых случаях. Например, есть приложение, которое можно использовать только после входа в систему. У входа в систему есть две кнопки: «Войти» и «Отмена». Когда вы нажимаете кнопку «Отмена», это определенно означает «Завершить приложение». Никто не хочет приложение живым в фоновом режиме. Поэтому я согласен, что в некоторых случаях необходимо закрыть приложение.
источник
Создайте
ExitActivity
и объявите это в декларации. И позвонитеExitActivity.exit(context)
для выхода из приложения.источник
В Android нет выхода из приложения , SampleActivity.this.finish (); завершит текущую деятельность.
При переходе от одного занятия к другому продолжайте заканчивать предыдущее
источник
Прежде всего, этот подход требует минимального Api 16.
Я разделю это решение на 3 части, чтобы решить эту проблему более широко.
1. Если вы хотите выйти из приложения в Activity, используйте этот фрагмент кода:
2. Если вы хотите , чтобы выйти из приложения в , не активность класса , который имеет доступ к деятельности , то используйте этот код:
3. Если вы хотите выйти из приложения в классе, отличном от Activity, и не можете получить доступ к Activity, например Service, я рекомендую вам использовать BroadcastReceiver. Вы можете добавить этот подход ко всем своим действиям в вашем проекте.
Создайте переменные экземпляра LocalBroadcastManager и BroadcastReceiver. Вы можете заменить getPackageName () + ". Closeapp", если хотите.
Добавьте это к методу onCreate () Activity.
Также не забудьте вызвать незарегистрированный получатель в методе Activity из onDestroy ().
Для выхода из приложения вы должны отправить широковещательную рассылку, используя LocalBroadcastManager, который я использую в своем классе PlayService, который расширяет Service.
источник
Вы можете использовать
finishAndRemoveTask ()
из API 21источник
Это зависит от того, как быстро вы хотите закрыть приложение.
Безопасный способ закрыть ваше приложение - finishAffinity ();
После закрытия всех процессов приложение закрывается. Это может занять некоторое время. Если вы закроете свое приложение таким образом и через короткое время перезапустите его, возможно, ваше новое приложение будет запущено в том же процессе. Со всеми незавершенными процессами и одиночными объектами старого приложения.
Если вы хотите быть уверены, что ваше приложение полностью закрыто, используйте System.exit (0);
Это немедленно закроет ваше приложение. Но возможно, что вы повредите файлы, которые открыты в вашем приложении, или редактирование общих настроек не завершится. Так что используйте это осторожно.
Если вы используете сторожевой таймер в сочетании с долгосрочным заданием, вы можете увидеть влияние различных методов.
Это убивает ваше приложение через 2 секунды без отображения диалога ANR или чего-то в этом роде. Если вы удалите System.exit (0) , запустите этот код и перезапустите приложение после его закрытия, вы увидите странное поведение, потому что бесконечный цикл все еще работает.
источник
Вам лучше использовать,
finish()
если вы находитесь вActivity
, илиgetActivity().finish()
если вы вFragment
.Если вы хотите полностью выйти из приложения, используйте:
источник
Простой и простой способ выйти из приложения
источник
Мы хотим, чтобы код был надежным и простым. Это решение работает на старых устройствах и более новых устройствах.
источник
Я думаю, что вы ищете это
источник
источник
Аналогично @MobileMateo, но в Котлине
источник
Я не уверен, если это осуждается или нет, но это то, как я это делаю ...
Шаг 1 - У меня обычно есть класс, который содержит методы и переменные, к которым я хочу получить глобальный доступ. В этом примере я назову это классом «App». Создайте статическую переменную Activity внутри класса для каждого действия, которое есть в вашем приложении. Затем создайте статический метод с именем «close», который будет запускать
finish()
метод для каждой из этих переменных Activity, если они НЕ равны NULL . Если у вас есть основное / родительское действие, закройте его последним:Шаг 2 - в каждом из ваших действий, переопределение
onStart()
иonDestroy()
методы. ВonStart()
, установите статическую переменную в вашем классе приложения равной "this
". ВonDestroy()
, установите его равнымnull
. Например, в классе «Activity1»:Шаг 3 - Если вы хотите закрыть свое приложение, просто позвоните
App.close()
из любой точки мира. Все созданные экземпляры будут закрыты! Так как вы только закрываете действия, а не убиваете само приложение (как в ваших примерах), Android может взять на себя эту задачу и выполнить любую необходимую очистку.Опять же, я не знаю, будет ли это осуждено по любой причине. Если это так, я хотел бы прочитать комментарии о том, почему это так и как это можно улучшить!
источник
api>=16
использованияfinishAffinity()
еще используйте этот метод.Не одобряется ли выход из приложения? , Пройдите по этой ссылке. Это отвечает на ваш вопрос. Система выполняет работу по уничтожению приложения.
Предположим, у вас есть два действия A a B. Вы переходите от A к B. Когда вы нажимаете кнопку «Назад», ваше действие B извлекается из backstack и уничтожается. Предыдущее действие в заднем стеке A фокусируется.
Вы должны оставить это для системы, чтобы решить, когда убивать приложение.
общественная пустота
finish()
Позвоните, когда ваша деятельность завершена и должна быть закрыта.
Предположим, у вас много занятий. Вы можете использовать панель действий. При нажатии на иконку дома перейдите к MainActivity вашего приложения. В MainActivity нажмите кнопку «Назад», чтобы выйти из приложения.
источник
Для выхода из приложения вы можете использовать следующее:
Также для остановки сервисов тоже вызовите следующий метод:
источник
Это может быть очень поздно, а также в соответствии с инструкциями, которые вы не должны обрабатывать процесс жизненного цикла самостоятельно (как ОС делает это для вас). Предполагается, что вы зарегистрируете радиовещательного приемника во всех своих действиях с помощью "
finish()
" в ихonReceive()
&, если вы хотите выйти, вы можете просто передать намерение, указывающее, что все действия должны быть закрыты ..... Хотя убедитесь, что вы это делаете " Отмените регистрацию получателя в вашихonDestroy()
методах.источник
Это не хорошее решение, потому что оно противоречит принципам обработки приложений Android. Android не убивает никакой процесс, если он не является абсолютно неизбежным. Это помогает приложениям запускаться быстрее, потому что они всегда хранятся в памяти. Поэтому вам нужна особая причина, чтобы убить процесс вашего приложения.
источник
Правильное и точное решение для выхода из приложения по нажатию кнопки - использовать следующий код:
// На кнопке Back нажал событие
источник
Если вы используете Kotlin, правильный способ выхода из приложения и альтернатива
System.exit()
- встроенный методСмотрите документацию .
Число
0
в качестве параметра означает, что выход предназначен и ошибки не произошло.источник
Это убьет все что угодно;)
источник
Попробуй это
источник
Я нашел самый простой способ выйти из приложения из действия, не нарушая логику Android и не добавляя больше кода в существующие действия и передавая дополнения, это следующее:
QuitApplicationActivity
существо:источник
Ответ @Sivi закрывает приложение. Но по возвращении, если у вас есть какие-то дочерние действия, может быть открыто другое незаконченное действие. Я добавил
noHistory:true
в свою деятельность, чтобы приложение по возвращении начиналось с MainActivity.источник
Просто чтобы добавить один в список жестоких методов завершения приложения:
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
источник
Process.killProcess(Process.myPid())
делает то же самое, но корочеВы можете выйти из своих полных приложений. таким образом
это будет работать на 100%. Удачи!
источник
Просто используйте финиш () на клавишу возврата, нажмите на клавишу ()
источник