1-15.【Stage 模型】ArkUI 与 Stage 模型的关系?

4 阅读2分钟

1️⃣ 基本概念

概念作用特点
ArkUIHarmonyOS 的 声明式 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 与生命周期的协作

  1. UIAbility 生命周期

    • onCreate() / onForeground() → ArkUI 页面创建与渲染
    • onBackground() → ArkUI 页面可选择暂停动画或解绑状态
    • onDestroy() → ArkUI 页面释放资源
  2. WindowStage 生命周期

    • 页面入栈 → ArkUI 初始化组件
    • 页面出栈 → ArkUI 回收组件,状态可序列化
  3. 热启动 / 冷启动

    • 热启动:复用 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️⃣ 总结关系

层级作用
UIAbilityAbility 级别,管理 WindowStage,协调 ArkUI 页面
WindowStage页面栈级别,管理页面入栈/出栈、生命周期,控制 ArkUI 页面显示
Page(ArkUI)页面级别,负责 UI 渲染和状态管理
Stage 模型关注能力、生命周期、页面栈、分布式流转
ArkUI关注 UI 渲染和状态同步,依赖 Stage 生命周期驱动

✅ 核心理解:

  • Stage 模型管理生命周期与页面栈
  • ArkUI 管理页面渲染和状态
  • 二者协作,实现 声明式 UI + 生命周期可控 + 多窗口 + 跨设备流转