Activity 和Fragment的生命周期
-
Activity 的生命周期
- 基本概念:Activity 运行时会受突发事件影响,需掌握其生命周期,同时补充了 Activity 活动栈和活动状态的相关内容。
- 活动栈:用于管理多个 Activity 的先后次序。
- 活动状态:包括活动状态(在栈顶,可交互)、暂停状态(部分遮挡,不可交互)、停止状态(完全遮挡)和非活动状态(被销毁)。
- 状态切换:状态切换时会触发相应回调方法,如 onCreate ()、onStart () 等,可通过 Log.v () 方法查看提示信息。
- 数据保持:提供两种机制,一是借助 onPause () 和 onRestart () 回调方法,二是通过 onSaveInstanceState () 和 onRestoreInstanceState () 方法。
- 应用:涉及切换 Activity 时的状态保存和 Activity 栈的基础应用。
-
Fragment 的生命周期
从 Android v3.0 版本引入,不具有显示视图能力,依赖 Activity 存在,其生命周期方法与 Activity 有先后执行顺序。
- 状态切换:状态切换时会触发相应回调方法,如 onCreate ()、onAttach () 等。
- 使用回顾:包括在主布局文件中添加 FrameLayout 控件、自定义 Fragment 布局和类文件、在 Activity 中添加 Fragment 页面等步骤。
- 生命周期与 Activity 关系:通过 Demo 测试了 Fragment 与 Activity 生命周期方法的执行顺序关系。
Activity 生命周期的应用场景
-
用户交互与界面更新:当 Activity 处于活动状态(onResume)时,可进行各种用户交互操作,如点击按钮、输入文本等,并及时更新界面显示。
-
处理后台任务:在 Activity 进入暂停状态(onPause)时,可暂停一些耗时的操作,如视频播放、网络下载等,以节省系统资源。
-
数据保存与恢复
- 在 Activity 即将被销毁(onDestroy)时,可保存用户输入的数据、当前界面状态等,以便下次启动时恢复。
- 当 Activity 从停止状态恢复(onRestart)时,可读取之前保存的数据,恢复到之前的界面状态。
-
多 Activity 切换
- 在切换 Activity 时,通过生命周期方法可实现动画效果、传递数据等。
- 例如,从一个列表 Activity 跳转到详情 Activity 时,可传递列表项的数据,并在详情 Activity 中展示。
Fragment 生命周期的应用场景
- 动态更新界面:在 Fragment 的生命周期方法中,可以根据不同的状态动态更新界面内容。例如,在 onResume 方法中加载最新的数据并显示,在 onPause 方法中暂停数据的更新。
- 与 Activity 交互:Fragment 可以与所属的 Activity 进行通信,通过 Activity 的生命周期方法来协调两者之间的操作。例如,在 Activity 的 onCreate 方法中初始化 Fragment,在 Fragment 的 onAttach 方法中获取 Activity 的引用。
- 复用 UI 组件:Fragment 可以作为可复用的 UI 组件,在不同的 Activity 中使用。通过合理利用 Fragment 的生命周期,可以确保在不同的 Activity 中使用时,Fragment 的状态和行为正确。
- 多屏适配:在处理多屏适配时,Fragment 的生命周期方法可以帮助我们根据屏幕尺寸和方向的变化,动态调整 Fragment 的布局和显示内容。