Простой вопрос: можете ли вы быть уверены, что 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!