Я читал некоторые сообщения, в которых говорилось, что использование этого метода «нехорошо», его не следует использовать, это неправильный способ «закрыть» приложение и что Android работает не так...
Я понимаю и принимаю тот факт, что ОС Android лучше меня знает, когда нужно завершить процесс, но я еще не слышал внятного объяснения, почему неправильно использовать killProcess()
метод. Ведь это часть Android API.
Что я знаю, так это то, что вызов этого метода, когда другие потоки выполняют потенциально важную работу (операции с файлами, запись в БД, HTTP-запросы, запущенные сервисы и т. д.), приводит к завершению потоков, и это явно нехорошо. Кроме того, я знаю, что могу извлечь выгоду из того факта, что «повторное открытие» приложения будет быстрее, потому что система все еще «удерживает» состояние памяти с момента последнего использования приложения, и killProcess()
предотвращает это.
Помимо этой причины, предполагая, что у меня нет таких операций, и меня не волнует мое приложение, будет ли мое приложение запускаться с нуля каждый раз, когда оно открывается, есть ли другие причины, по которым я не должен использовать Метод killProcess()
?
Я знаю о методе finish()
для закрытия Activity
, поэтому, пожалуйста, не включайте это в свой ответ.
finish()
предназначен только для Activity
, а не для всех приложений, и я думаю, что точно знаю, почему и когда его использовать.
И еще — я разрабатываю игры на фреймворке Unity3D и экспортирую проект на Android. Когда я декомпилировал сгенерированный apk, я был очень удивлен, обнаружив, что исходный код Java, созданный из Unity, реализует метод Unity — Application.quit()
с Process.killProcess(Process.myPid ())
.
Application.quit()
должен быть правильным способом закрытия игры в соответствии с документацией Unity3D (правда ли это? Может быть, я ошибаюсь и что-то упустил), так почему же разработчики фреймворка Unity реализовали это в собственном Android?