Зачем использовать onDestroy(), если он не гарантированно называется?
В соответствии с жизненным циклом активности андроида, единственный вызываемый вызов, который должен быть вызван (если активность когда-либо покидает состояние Running, которое обычно ожидается) составляет onPause()
.
Итак, я должен предположить, что существуют сценарии, в которых имеет смысл реализовать onStop()
и onDestroy()
, хотя на самом деле они не гарантируются.
Я понимаю, что onStop()
должен быть реализован, когда возможно, что действие вернется в состояние Running через состояние Stopped (почему бы ему это сделать, а не возвращать напрямую - это другой вопрос).
Но необходимость onDestroy()
, когда я могу разместить всю очистку/сохранение состояния в onPause()
, мне непонятно.
Можете ли вы описать ситуацию с реальным приложением (т.е. не аналогию с вождением автомобиля и т.д.), в которой было бы целесообразно реализовать onDestroy()
?
Ответы
Ответ 1
onDestroy вызывается, если вы явно вызываете finish(); сами.
Ваш основной вид деятельности вызывает startActivityForResult на активность карты.
Активность карты с помощью LocationListener, пользователь нажимает на карту и выбирает локальный ресторан.
Затем выполняется настройка некоторых дополнительных функций, которые будут отправлены обратно в основное действие, затем явным образом вызывается finish(); на себе и в onDestroy убивает LocationListener и другие переменные, которые вы вызывали.
Просто нашел это в документах
onDestroy() = Последний звонок, который вы получаете до того, как ваша деятельность будет уничтожена. Это может произойти либо потому, что активность завершается (кто-то называется finish() на нем, либо потому, что система временно уничтожает этот экземпляр активности для экономии места. Вы можете различать эти два сценария с методом isFinishing().
Ответ 2
Можете ли вы описать ситуацию с реальным приложением (то есть не аналогии с вождением автомобиля и т.д.), в котором было бы целесообразно реализовать onDestroy()?
Если вы хотите зафиксировать изменение конфигурации. Все это в SDK:
http://developer.android.com/reference/android/app/Activity.html