鸿蒙开发生命周期全解:从应用到卡片的全链路状态管理

66 阅读2分钟

一、生命周期的核心定位

鸿蒙生命周期是全链路状态管理的骨架,按粒度从大到小分为四层,每层管控对应层级的资源与状态,核心是 “在正确时机做正确的事”。

二、四层核心生命周期

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回调触发→卡片状态变化(与应用生命周期解耦)。

四、核心避坑点

  1. 不要在build()中做耗时操作(会频繁触发,导致卡顿);
  2. 卡片不要高频刷新(间隔≥5 分钟,避免资源消耗);
  3. 路由跳转不要传大量数据(用 ID 或全局存储,避免序列化延迟);
  4. 组件销毁时需清理资源(aboutToDisappear()中取消订阅 / 定时器)。