Android: закончит() ВСЕГДА вызовет onDestroy()?

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