Зачем реализовывать onDestroy(), если он не гарантированно вызывается?

В соответствии с жизненным циклом активности Android, единственный гарантированный вызов, который будет вызываться (если активность когда-либо покидает состояние выполнения, что обычно ожидается), onPause(),

Итак, я должен предположить, что есть сценарии, в которых имеет смысл реализовать onStop() а также onDestroy() хотя на самом деле они не гарантированно будут называться.

Я это понимаю onStop() Должен быть реализован, когда для активности возможно вернуться в состояние "Выполнено" через состояние "Остановлено" (зачем это делать вместо непосредственного возврата - это другой вопрос).

Но необходимость onDestroy(), когда я могу поместить всю очистку / сохранение состояния в onPause(), мне непонятно.

Можете ли вы описать ситуацию реального приложения (т.е. не аналогию с вождением автомобиля и т. Д.), В которой было бы целесообразно реализовать onDestroy()?

2 ответа

Решение

onDestroy будет вызываться, если вы явно вызываете finish(); сам.

Ваше основное действие вызывает startActivityForResult для действия на карте.

Активность на карте с LocationListener, пользователь нажимает на карту и выбирает, скажем, местный ресторан.

Затем задание устанавливает некоторые дополнительные функции для отправки в основное занятие, затем оно явно вызывает метод finish(); сам по себе и в onDestroy убивает LocationListener и другие переменные, которые вы вызывали.

Просто нашел это в документах

onDestroy() = Последний звонок, который вы получите до того, как ваша активность будет уничтожена. Это может произойти либо из-за того, что действие заканчивается (кто-то вызвал finish () на нем, либо из-за того, что система временно уничтожает этот экземпляр действия для экономии места. Вы можете различить эти два сценария с помощью метода isFinishing().

Можете ли вы описать ситуацию реального приложения (т.е. не аналогию с вождением автомобиля и т. Д.), В которой имеет смысл реализовать onDestroy()?

Когда вы хотите зафиксировать изменение конфигурации. Это все в SDK: http://developer.android.com/reference/android/app/Activity.html

Другие вопросы по тегам