深度剖析 Fragment 源码:揭秘 Activity 与 FragmentManager 的关联
2023-12-15 13:54:40
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 的生命周期主要包括以下几个阶段:
- onAttach(): 当 Fragment 与 Activity 建立关联时触发。
- onCreate(): 当 Fragment 被创建时触发,此时 Fragment 的视图还没有被创建。
- onCreateView(): 当 Fragment 的视图被创建时触发,此时 Fragment 可以通过该方法返回一个 View 对象作为自己的视图。
- onActivityCreated(): 当 Fragment 所在的 Activity 的 onCreate() 方法返回时触发,此时 Fragment 的视图已经被添加到 Activity 的布局中。
- onStart(): 当 Fragment 变为可见时触发,此时 Fragment 可以开始执行一些操作。
- onResume(): 当 Fragment 变为活动状态时触发,此时 Fragment 可以与用户进行交互。
- onPause(): 当 Fragment 变为非活动状态时触发,此时 Fragment 应该停止与用户进行交互,但仍可以执行一些后台任务。
- onStop(): 当 Fragment 变为不可见时触发,此时 Fragment 应该停止所有与用户相关的操作,但仍可以执行一些后台任务。
- onDestroyView(): 当 Fragment 的视图被销毁时触发,此时 Fragment 的视图将从 Activity 的布局中移除。
- 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 应用。