1️⃣ Stage 模型与 FA 模型的本质差异
| 维度 | FA 模型(旧) | Stage 模型(新) | 差异与优化点 |
|---|---|---|---|
| 核心抽象 | Ability + PageAbility | Ability + WindowStage + Page | Stage 将页面和窗口分离,引入 WindowStage,支持多窗口和多设备流转。 |
| 生命周期管理 | Ability 生命周期与页面高度耦合 | Ability 生命周期与 WindowStage 生命周期分离 | 页面可以独立创建/销毁,不必销毁整个 Ability;资源管理更精细。 |
| 多实例支持 | PageAbility 对 Ability 实例强绑定 | WindowStage 支持多实例 | 可以在同一 Ability 下存在多个独立 WindowStage,实现多窗口、多任务场景。 |
| 多设备协同 | 支持能力有限 | 原生支持 Ability Continuation | Ability 状态可序列化并迁移到另一设备,跨设备延续用户操作。 |
| UI 渲染 | 页面直接依赖 Ability | 页面绑定 WindowStage | UI 与窗口解耦,支持分屏、折叠屏、桌面小窗等复杂场景。 |
| 模块化 | HAP 与 FA 强耦合 | Stage 支持多 HAP + 独立 WindowStage | 多模块可按需加载,跨 HAP 页面跳转更灵活。 |
✅ 总结:Stage 模型本质上是 能力(Ability)与窗口(WindowStage)解耦的进化版本,它解决了 FA 模型中生命周期耦合、页面管理不灵活、多设备协同能力弱的问题。
2️⃣ Stage 在多设备协同场景下解决的问题
-
Ability Continuation(能力延续)
- 可以将当前 Ability 的状态、页面栈、UI 状态序列化,迁移到另一设备继续操作。
- 例如:手机上编辑文档,用户切换到平板,文档状态无缝延续。
-
状态同步与恢复
- Stage 模型通过 WindowStage 维护独立 UI 状态,可以精确恢复页面布局和用户操作历史。
- 避免了 FA 模型中跨设备恢复时“整个 Ability 重启”的问题。
-
多设备多窗口支持
- Stage 可以在不同设备上创建独立 WindowStage 实例,实现多屏显示、跨设备协作。
- UI 层与业务能力层解耦,不同设备可同时操作不同窗口实例。
-
模块化与动态加载
- Stage 支持 HAP 按需加载和多模块跳转,跨设备能力迁移时无需完整下载所有模块,提高效率。
✅ 总结:Stage 模型在多设备协同下,使 跨设备能力迁移、UI 状态保持、窗口独立管理成为可能,用户体验更自然,工程实现更灵活。