Ответ 1
Таким образом, причина, по которой она отличается от фрагментов и действий, заключается в том, что их жизненные циклы различны. Когда Activity
уничтожается, он уходит навсегда. Тем не менее, Fragments
может создавать и уничтожать свои представления несколько раз, прежде чем они будут уничтожены. Для уточнения, в Управлении:
onDestroy()
onCreate()
никогда не будет происходить последовательно для одного и того же экземпляра Activity. Для фрагмента совершенно справедливо следующее:
onCreate()
onCreateView()
onDestroyView()
onCreateView()
onDestroyView()
onDestroy()
В одном случае, когда вы видите это, когда Fragment
переходит в задний стек. Его вид будет уничтожен (поскольку он больше не виден), но экземпляр останется вокруг, чтобы его можно было легко возобновить, когда пользователь нажимает назад, чтобы вернуться к нему (в этот момент снова будет вызываться onCreateView()
).
После onDestroyView()
вы можете (и, вероятно, должны) освободить все ваши ссылки View
, чтобы они могли быть собраны в мусор. Во многих случаях это не обязательно, как если бы это произошло во время изменения конфигурации, onDestroy()
будет немедленно следовать, и весь экземпляр будет собираться мусором.
По сути, я бы сказал, что хорошей практикой является выпуск любых ссылок на все ссылки в onDestroyView()
и может сэкономить довольно немного памяти, если ваше приложение имеет большую заднюю часть.