【发布时间】:2016-05-21 18:57:52
【问题描述】:
我有一个 Activity MyActivity 和一个 Fragment MyFragment。 Activity 的onDestroy() 方法以super.onDestroy() 开头。
从日志语句和Android 源代码来看,看起来Activity 的超级onDestroy() 方法调用了Fragment 的onDestroy() 方法。然后当Fragment 的onDestroy() 方法完成时,将执行Activity 的onDestroy() 方法的其余部分。所以我相信,直到Fragment 的onDestroy() 方法完成之后,Activity 才会被销毁。
这让我觉得从MyFragment 的onDestroy() 方法我可以安全地调用MyActivity 的快速方法并依赖MyActivity 的属性。我永远不会这样做,但假设我在 MyFragment 的 onDestroy 方法中时可以依赖 `MyActivity 中的属性和方法吗?
文档对Activity 的onDestroy() 方法的描述,“您在活动被销毁之前收到的最终调用”,我的意思是在此方法返回后Activity 将被销毁。
Fragment 的onDestroy() 方法文档并没有真正说明Activity 是否已启动销毁过程。
【问题讨论】:
-
在
onDestroy()上使用Activity是完全安全的。在onDestroy()之后,另一个名为onDetach()的生命周期方法被调用,并且仅从它们对它的Activity不保存使用。在那之后getActivity()或者应该返回null,直到再次调用onAttach()。onAttach()是Fragment生命周期中的第一个调用之一,发生在onCreate()之前。
标签: android android-fragments android-activity android-lifecycle