返回

深度剖析 Fragment 源码:揭秘 Activity 与 FragmentManager 的关联

Android

FragmentManager 与 Activity 的亲密合作

在 Android 开发中,FragmentManager 是 Fragment 的管理者,而 Activity 是 Fragment 的容器。两者之间有着紧密而微妙的合作关系,共同构成了 Android 应用的运行机制。

FragmentManager 的诞生

FragmentManager 是一个系统服务,由 ActivityManager 创建并管理。当一个 Activity 被创建时,系统会自动创建一个与其关联的 FragmentManager。FragmentManager 的主要职责是管理 Fragment 的生命周期,协调 Fragment 与 Activity 之间的交互,以及处理 Fragment 的事务。

Activity 为 Fragment 提供舞台

Activity 是 Fragment 的容器,为 Fragment 提供了一个展示的平台。当 Fragment 被添加到 Activity 中时,FragmentManager 会将 Fragment 的视图添加到 Activity 的布局中,并负责 Fragment 的生命周期管理。

Fragment 的生命周期之旅

Fragment 的生命周期与 Activity 的生命周期息息相关,但又有着自己的独特之处。Fragment 的生命周期主要包括以下几个阶段:

  1. onAttach(): 当 Fragment 与 Activity 建立关联时触发。
  2. onCreate(): 当 Fragment 被创建时触发,此时 Fragment 的视图还没有被创建。
  3. onCreateView(): 当 Fragment 的视图被创建时触发,此时 Fragment 可以通过该方法返回一个 View 对象作为自己的视图。
  4. onActivityCreated(): 当 Fragment 所在的 Activity 的 onCreate() 方法返回时触发,此时 Fragment 的视图已经被添加到 Activity 的布局中。
  5. onStart(): 当 Fragment 变为可见时触发,此时 Fragment 可以开始执行一些操作。
  6. onResume(): 当 Fragment 变为活动状态时触发,此时 Fragment 可以与用户进行交互。
  7. onPause(): 当 Fragment 变为非活动状态时触发,此时 Fragment 应该停止与用户进行交互,但仍可以执行一些后台任务。
  8. onStop(): 当 Fragment 变为不可见时触发,此时 Fragment 应该停止所有与用户相关的操作,但仍可以执行一些后台任务。
  9. onDestroyView(): 当 Fragment 的视图被销毁时触发,此时 Fragment 的视图将从 Activity 的布局中移除。
  10. onDestroy(): 当 Fragment 被销毁时触发,此时 Fragment 的所有资源都将被释放。

Activity 与 FragmentManager 的默契配合

Activity 与 FragmentManager 之间的交互是通过 FragmentTransaction 来实现的。FragmentTransaction 是一个原子性操作,它可以用来添加、删除、替换或隐藏 Fragment。FragmentManager 提供了多种方法来创建 FragmentTransaction,例如:

  • add(): 将一个 Fragment 添加到 Activity 的布局中。
  • replace(): 用一个 Fragment 替换另一个 Fragment。
  • remove(): 从 Activity 的布局中移除一个 Fragment。
  • hide(): 隐藏一个 Fragment,但不会将其从 Activity 的布局中移除。
  • show(): 显示一个 Fragment,但不会将其添加到 Activity 的布局中。

FragmentManager 会自动管理 Fragment 的生命周期,并在适当的时候调用 Fragment 的生命周期方法。

结语

FragmentManager 和 Activity 之间的关联是 Android 开发中不可或缺的一部分。通过了解两者的工作原理,我们可以更好地理解 Fragment 的生命周期,并编写出更加健壮的 Android 应用。