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