#java #android #kotlin
#java #Android #kotlin
Вопрос:
Я использую этот код для принудительного закрытия моего приложения через 1 секунду. Но проблема в том, что оно перезапускается само после закрытия! Как я могу заставить его закрыться навсегда?
private fun endApp() {
val handler = Handler()
handler.postDelayed({ Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL) }, 1000)
}
Комментарии:
1. Я предполагаю, что это связано с тем, что, когда вы завершаете процесс, Android предполагает, что приложение завершило работу и автоматически перезапускает его. Если проблема в этом, решением было бы найти другой способ выйти из приложения, не прерывая процесс таким образом. Проверьте, работает ли это: tutorialspoint.com/how-to-quit-application-programmatically
Ответ №1:
Используйте этот метод для принудительного выхода из вашего приложения:
fun exitApp() {
moveTaskToBack(true);
exitProcess(0)
}
ExitProcess(status: Int): завершает текущий запуск
процесс.moveTaskToBack (логическое значение nonRoot) Перемещает задачу, содержащую это действие, в конец стека действий. Порядок действий в задаче не изменился.
или
finishAffinity(): завершите это действие, а также все действия непосредственно под ним в текущей задаче, которые имеют такое же сходство. Обычно это используется, когда приложение может быть запущено для перехода к другой задаче (например, из ACTION_VIEW понятного ему типа контента), и пользователь использовал навигацию вверх, чтобы переключиться с текущей задачи на свою собственную задачу. В этом случае, если пользователь перешел к каким-либо другим действиям второго приложения, все они должны быть удалены из исходной задачи как часть переключения задач.
fun exitApp() {
finishAffinity()
}
Комментарии:
1. Ваш код закрывает мое приложение без перезапуска, это хорошо! Но проблема в том, что у меня запущена служба (с уведомлением), и она закрывает и перезапускает ее… (Протестировано на Android 8.1) Итак, ваш ответ решил половину моей проблемы.
2. Подводя итог,
moveTaskToBack(true); exitProcess(0)
приложение успешно закрывается, но перезапускается его служба. ИfinishAffinity
закрывает приложение, но продолжает работу его службы.3. Я хочу закрыть приложение И завершить работу всех его служб. Спасибо за ваше время!
4. @Bandy вы нашли решение?