结合Application.ActivityLifecycleCallbacks的生命周期及MyFragmentLifecycleCallbacks生命周期整合流程
一、Application.ActivityLifecycleCallbacks 各个方法说明
Application.ActivityLifecycleCallbacks
提供了以下主要方法来监听 Activity 的生命周期变化:
onActivityCreated(Activity activity, Bundle savedInstanceState)
:当 Activity 被创建时调用。onActivityStarted(Activity activity)
:当 Activity 开始可见时调用。onActivityResumed(Activity activity)
:当 Activity 处于前台并可与用户交互时调用。onActivityPaused(Activity activity)
:当 Activity 失去焦点但仍然可见时调用。onActivityStopped(Activity activity)
:当 Activity 不可见时调用。onActivityDestroyed(Activity activity)
:当 Activity 被销毁时调用。
二、MyFragmentLifecycleCallbacks 的逻辑及与 ActivityLifecycleCallbacks 的结合
-
onFragmentPreAttached
:- 页面状态:当一个 Fragment 即将被附加到 Activity 之前触发。这个阶段通常在 Activity 的创建过程中或者当新的 Fragment 要被添加到已有 Activity 时发生。在这个阶段,可以进行一些初始化数据的准备工作,或者设置一些初始状态变量,为后续的附加过程做好准备。
- 与 ActivityLifecycleCallbacks 的结合:在
onActivityCreated
之后,如果有新的 Fragment 要被添加到 Activity,可能会触发这个方法。可以通过 ActivityLifecycleCallbacks 了解到 Activity 的创建状态,为 Fragment 的附加做好准备。
-
onFragmentAttached
:- 页面状态:当 Fragment 成功附加到 Activity 时触发。此时 Fragment 已经成为 Activity 视图层次结构的一部分,可以开始与 Activity 进行交互,或者进行一些依赖于 Activity 上下文的操作。
- 与 ActivityLifecycleCallbacks 的结合:在
onActivityCreated
和可能的后续操作之后,当 Fragment 被附加到 Activity,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 的状态了解,更好地管理 Fragment 的附加过程。
-
onFragmentViewCreated
:- 页面状态:当 Fragment 的视图被创建完成后调用。这意味着 Fragment 的布局文件已经被实例化,并且可以通过视图 ID 访问到各个视图组件。在这个阶段,可以进行视图相关的初始化工作,如绑定视图组件到数据、设置点击监听器、初始化适配器等。
- 与 ActivityLifecycleCallbacks 的结合:通常在 Activity 的视图创建完成后(可能在
onActivityCreated
和后续方法中),如果有 Fragment 的视图被创建,这个方法会被触发。可以结合 ActivityLifecycleCallbacks 中对 Activity 视图状态的了解,更好地管理 Fragment 的视图创建过程。
-
onFragmentStarted
:- 页面状态:当 Fragment 变得可见时触发。这可能发生在用户导航到包含该 Fragment 的界面,或者 Fragment 从不可见状态变为可见状态。可以在这里启动一些需要在 Fragment 可见时进行的操作,比如播放视频、开始动画、启动数据加载等。
- 与 ActivityLifecycleCallbacks 的结合:当 Activity 的状态变为可见(
onActivityStarted
和onActivityResumed
)后,如果 Fragment 也变得可见,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 可见性的了解,协调 Fragment 的可见性相关操作。
-
onFragmentResumed
:- 页面状态:当 Fragment 恢复时调用,通常是在用户从其他 Fragment 或 Activity 返回到这个 Fragment 时发生。在这个阶段,Fragment 处于活动状态并且可以接收用户输入。可以在这里重新启动一些在暂停时暂停的操作,如继续播放视频、恢复动画、恢复数据加载等。
- 与 ActivityLifecycleCallbacks 的结合:当 Activity 处于前台并可与用户交互(
onActivityResumed
)后,如果 Fragment 也恢复,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 活跃状态的了解,协调 Fragment 的恢复操作。
-
onFragmentPaused
:- 页面状态:当 Fragment 失去焦点或进入后台时触发。比如用户切换到另一个应用或者导航到另一个 Fragment。在这个阶段,可以暂停一些不需要在后台运行的操作,如暂停视频播放、停止动画、暂停数据加载等,以节省资源。
- 与 ActivityLifecycleCallbacks 的结合:当 Activity 失去焦点(
onActivityPaused
)后,如果 Fragment 也被暂停,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 暂停状态的了解,协调 Fragment 的暂停操作。
-
onFragmentStopped
:- 页面状态:当 Fragment 不再可见时调用。这可能是因为用户导航到其他界面,或者 Fragment 被其他 Fragment 覆盖。可以在这里停止一些不需要在 Fragment 不可见时继续执行的操作,如停止动画、暂停数据加载等。
- 与 ActivityLifecycleCallbacks 的结合:当 Activity 不可见(
onActivityStopped
)后,如果 Fragment 也停止,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 不可见状态的了解,协调 Fragment 的停止操作。
-
onFragmentDestroyed
:- 页面状态:当 Fragment 即将被销毁时触发。这可能发生在 Activity 被销毁、配置更改(如屏幕旋转)导致 Fragment 重建,或者 Fragment 被从 FragmentManager 中移除。可以在这里执行清理工作,如释放资源、取消未完成的任务、移除监听器等。
- 与 ActivityLifecycleCallbacks 的结合:当 Activity 被销毁(
onActivityDestroyed
)后,如果 Fragment 也需要被销毁,这个方法会被调用。可以结合 ActivityLifecycleCallbacks 中对 Activity 销毁状态的了解,协调 Fragment 的销毁和资源清理操作。