android - 从活动调用完成会破坏托管片段吗?

Posted

技术标签:

【中文标题】android - 从活动调用完成会破坏托管片段吗?【英文标题】:android -does calling finish from activity destroy hosted fragment? 【发布时间】:2014-10-14 08:35:21 【问题描述】:

我有一个托管“片段 B”的“活动 A”。请确认如果我调用 A.finish() 则“片段 B”会被销毁。片段 B 已经添加到片段管理器中。我意识到一个片段是一个子活动,但我想知道我是否必须告诉片段管理器在 Ondestroy 中释放片段还是全部处理好?

【问题讨论】:

【参考方案1】:
but i want to know do i have to tell the fragment manager to 
release the fragment in Ondestroy or is it all taken care of ?

默认情况下,当您在活动中调用finish 时,它会自动调用附加到活动的所有片段的onDestroy 方法,从而销毁它,因此无需担心销毁您活动的onDestroy 方法中的片段。

来自documentation:

For example, when the activity is paused, so are all fragments in it, 
and when the activity is destroyed, so are all fragments. 

【讨论】:

【参考方案2】:

片段是活动的子活动。因此,每当我们调用完成时,与之关联的片段也会在不通知 FragmentManager 的情况下被销毁。

【讨论】:

【参考方案3】:

是的,片段被销毁了。来自android Fragment guide:

比如activity暂停的时候,里面的所有fragment也是, 当 Activity 被销毁时,所有 Fragment 也会被销毁。

【讨论】:

人们应该使用 onDestroy 还是 onDestroyView ?并且每个人都可以通过 getActivity 获得活动吗? @android 开发者 ondestroyview 当活动仍在内存中时很好。片段视图是从内存中释放出来的,但片段对象本身仍然存在,直到调用 ondestroy。

以上是关于android - 从活动调用完成会破坏托管片段吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android:从片段调用活动

从android中的活动调用片段

如何从活动中调用片段方法?

如何从Android中没有活动和片段的函数调用DialogFragment?

Android:从片段调用时如何从活动中获取返回结果?

当活动被破坏但我必须继续执行片段中的代码时该怎么办?