Простой вопрос: можете ли вы быть уверены, что finish() вызовет onDestroy()? Я не нашел подтверждения об этом.
Android: закончит() ВСЕГДА вызовет onDestroy()?
Ответ 1
Простой вопрос: можете ли вы быть уверены, что finish() вызовет onDestroy()?
Во-первых, этот ответ предполагает, что вы имеете в виду класс Android Activity и его метод finish() и onDestroy() метод жизненного цикла.
Во-вторых, это зависит от вашего определения "sure":
-
Ваш процесс может быть завершен между
finish()иonDestroy(), по причинам, не зависящим от того, что вызывает вызовfinish() -
Изготовитель устройства или модем ROM может внести некоторые завихренные изменения, которые нарушили бы соединение между
finish()иonDestroy() -
Аккумулятор может разрядиться между
finish()иonDestroy() -
Etc.
В-третьих, finish() не вызывает onDestroy(). Вы можете сказать это, прочитав исходный код. finish() обычно вызывает вызов onDestroy().
Вообще говоря, finish() в конечном итоге приведет к вызову onDestroy().
Ответ 2
Нет, вы не можете быть уверены!
Calling finish() обычно запускает onDestroy() в соответствии с жизненным циклом активности, но вы не можете положиться на него. В частности, не для сохранения ваших данных. Документация четко говорит
do not count on this method being called as a place for saving data!