1️⃣ 基本概念
| 概念 | 作用 | 特点 |
|---|---|---|
| ArkUI | HarmonyOS 的 声明式 UI 框架,类似 SwiftUI / Jetpack Compose | 页面布局、状态管理和组件渲染的核心引擎 |
| Stage 模型 | HarmonyOS 的 页面与能力管理模型 | UIAbility + WindowStage + 页面栈 + 生命周期管理 + 分布式流转 |
✅ 核心:ArkUI 负责页面呈现和状态渲染,Stage 模型负责页面栈、窗口、Ability 和生命周期管理
2️⃣ ArkUI 在 Stage 模型中的位置
UIAbility
├─ WindowStage
│ ├─ Page 1 (ArkUI 渲染)
│ ├─ Page 2 (ArkUI 渲染)
│ └─ Page N (ArkUI 渲染)
└─ WindowStage 2 ...
- 每个 Page 都是一个 ArkUI 页面
- ArkUI 负责渲染 Page 内的组件、处理状态变化
- WindowStage 维护页面栈和生命周期
- UIAbility 管理 WindowStage
💡 核心理解:
- Stage 模型管理 页面栈、窗口、Ability 生命周期
- ArkUI 管理 每个页面的 UI 渲染和状态变化
- 两者协作,实现 生命周期管理 + 声明式 UI 渲染
3️⃣ ArkUI 与生命周期的协作
-
UIAbility 生命周期
onCreate()/onForeground()→ ArkUI 页面创建与渲染onBackground()→ ArkUI 页面可选择暂停动画或解绑状态onDestroy()→ ArkUI 页面释放资源
-
WindowStage 生命周期
- 页面入栈 → ArkUI 初始化组件
- 页面出栈 → ArkUI 回收组件,状态可序列化
-
热启动 / 冷启动
- 热启动:复用 WindowStage 页面栈,ArkUI 直接恢复页面状态
- 冷启动:全新创建 ArkUI 页面,并绑定数据和状态
4️⃣ ArkUI 在 Stage 模型下的优势
| 优势 | 原因 |
|---|---|
| 声明式 UI 与状态同步 | ArkUI 的状态驱动 UI,Stage 模型负责生命周期和页面栈,二者解耦 |
| 跨设备迁移友好 | WindowStage 可序列化页面栈 + ArkUI 页面状态 → Ability Continuation |
| 多窗口支持 | Stage 模型多 WindowStage,ArkUI 页面可独立渲染,多窗口互不干扰 |
| 模块化开发 | 每个 Page 或 Feature HAP 可以独立使用 ArkUI,实现 UI 独立开发 |
5️⃣ 工程实践
-
页面粒度:每个 Page 对应 ArkUI 页面,便于 Hot Reload / 分布式流转
-
状态管理:
- 局部状态 → ArkUI Component 内部 State
- 全局状态 → ArkTS 或 DataBus
-
多窗口 / 分布式迁移:
- WindowStage 负责页面栈迁移
- ArkUI 页面状态序列化恢复
-
性能优化:
- 热启动时复用页面栈,ArkUI 直接恢复
- 后台 Ability 页面可暂停 ArkUI 渲染,减少 CPU / GPU 消耗
6️⃣ 总结关系
| 层级 | 作用 |
|---|---|
| UIAbility | Ability 级别,管理 WindowStage,协调 ArkUI 页面 |
| WindowStage | 页面栈级别,管理页面入栈/出栈、生命周期,控制 ArkUI 页面显示 |
| Page(ArkUI) | 页面级别,负责 UI 渲染和状态管理 |
| Stage 模型 | 关注能力、生命周期、页面栈、分布式流转 |
| ArkUI | 关注 UI 渲染和状态同步,依赖 Stage 生命周期驱动 |
✅ 核心理解:
- Stage 模型管理生命周期与页面栈
- ArkUI 管理页面渲染和状态
- 二者协作,实现 声明式 UI + 生命周期可控 + 多窗口 + 跨设备流转