【问题标题】:Does Fragment gets destroyed if we destroy an activity containing it?如果我们销毁包含它的活动,Fragment 会被销毁吗?
【发布时间】:2021-03-12 05:35:16
【问题描述】:

根据我对 Android 中 ActivityFragments 的理解,fragment 是调用它的 Activity 的子部分。

那么我想知道的是,如果我们完成或杀死片段所在的Activity,它将如何影响片段?

碎片也会被破坏吗?还是片段的状态独立于包含它的活动?请对此提供适当的说明...

【问题讨论】:

    标签: android android-layout android-fragments


    【解决方案1】:

    根据我对 Android 中的活动和片段的理解,片段是调用它的 Activity 的子部分。

    是的,你是对的,片段是在运行时动态添加的子部分

    那么我想知道的是,如果我们完成或杀死片段所在的Activity,它将如何影响片段?

    如果你杀死/完成一个 Activity 片段也将被销毁

    注意:Fragment 生命周期取决于 Activity 生命周期,如果 Activity 死了,那么 Fragment 就会死。

    在 Activity 上构建片段就像构建 2,3 或 4 层建筑。如果基地被摧毁,那么其他故事就不应该是稳定的。只要记住这个规则。这将帮助您理解。此外,您还可以在 Activity 和 Fragment 生命周期中应用日志记录。

    【讨论】:

      【解决方案2】:

      Activity 状态如何影响 Fragment

      因为一个Fragment总是由一个Activity托管,所以Fragment生命周期直接受宿主Activity 生命周期。比如当Activity暂停时,所有Fragments都在里面,当Activity被销毁时,所有片段

      Activity 的每个生命周期回调都会导致每个 Fragment 的类似回调,如下表所示。例如,当 Activity 接收到onPause() 时,它会为 Activity 中的每个 Fragment 触发一个 Fragment onPause()

      链接:https://google-developer-training.github.io/android-developer-advanced-course-concepts/unit-1-expand-the-user-experience/lesson-1-fragments/1-2-c-fragment-lifecycle-and-communications/1-2-c-fragment-lifecycle-and-communications.html

      也来自官方指南:“例如,对于一个 Activity,这个 (DESTROYED) 状态在 Activity 的 onDestroy 调用之前达到” 链接:https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED

      【讨论】:

        【解决方案3】:

        由于 Fragment 嵌入在一个 Activity 中,它会在 活动被杀死。由于活动的内容首先被杀死,片段将 在活动被销毁之前被销毁。

        【讨论】: