一、生命周期的核心定位
鸿蒙生命周期是全链路状态管理的骨架,按粒度从大到小分为四层,每层管控对应层级的资源与状态,核心是 “在正确时机做正确的事”。
二、四层核心生命周期
1. 应用层:控制应用 / 卡片的 “根状态”
- Page Ability(页面应用) :管理应用启动 / 退出,核心回调:
onCreate()(初始化全局资源)→onWindowStageCreate()(加载 UI)→onWindowStageActive()(恢复前台状态)→onDestroy()(清理全局资源)。 - Form Ability(卡片应用) :管理桌面卡片独立生命周期,核心回调:
onCreateForm()(卡片创建,初始化数据)→onUpdateForm()(卡片刷新,更新数据)→onDestroyForm()(卡片移除,清理资源)。
2. 页面与路由层:管理页面跳转的 “状态链”
- Page 页面:控制单页显示 / 隐藏,核心回调:
onPageShow()(页面显示,加载数据)→onPageHide()(页面隐藏,暂停活动)→onBackPressed()(处理返回逻辑)。
3. 组件层:UI 渲染的 “原子状态”
ArkUI自定义组件的核心,所有 UI 变化源于生命周期触发:
- 创建:组件
aboutToAppear()(初始化)→ 页面onPageShow()→build()(渲染 UI); - 更新:状态变量(
@State/@Link)变化→build()重新执行; - 销毁:页面
onPageHide()→组件aboutToDisappear()(清理资源)→移除。
4. 卡片层:桌面小部件的 “独立状态”
- 生命周期独立于应用(应用退出仍可刷新),核心流程:
用户添加→onCreateForm()创建→定时 / 主动onUpdateForm()刷新→用户点击onFormEvent()交互→移除→onDestroyForm()清理。
三、核心联动逻辑
- 应用启动:
应用onCreate()→页面onPageShow()→组件aboutToAppear()→组件build(); - 页面跳转:
旧页onPageHide()→新页onPageShow()→新页组件创建; - 卡片操作:
Form Ability回调触发→卡片状态变化(与应用生命周期解耦)。
四、核心避坑点
- 不要在
build()中做耗时操作(会频繁触发,导致卡顿); - 卡片不要高频刷新(间隔≥5 分钟,避免资源消耗);
- 路由跳转不要传大量数据(用 ID 或全局存储,避免序列化延迟);
- 组件销毁时需清理资源(
aboutToDisappear()中取消订阅 / 定时器)。