Почему вызов Process.killProcess(Process.myPid()) — плохая идея?

Я читал некоторые сообщения, в которых говорилось, что использование этого метода «нехорошо», его не следует использовать, это неправильный способ «закрыть» приложение и что 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?

25
задан Edric 2 May 2019 в 08:14
поделиться