自 HarmonyOS 3.1 起,华为正式引入 Stage 模型,并宣布 FA(Feature Ability)模型逐步废弃。到 HarmonyOS 6.0.0(API 6.0.2) 时代,Stage 模型已成为唯一推荐的应用架构标准。
如果你仍在使用 FA 模型,你的应用将:
- ❌ 无法上架新版华为应用市场;
- ❌ 无法使用最新 UI 能力(如 高性能绘制、分布式窗口);
- ❌ 失去对多设备协同、后台任务管理等高级特性的支持。
本文将带你从零彻底搞懂 Stage 模型,涵盖:
- ✅ Stage vs FA 模型核心差异;
- ✅ 、、 三大核心概念;
- ✅ 项目结构文件(, )详解;
- ✅ 如何获取屏幕尺寸、窗口、能力上下文;
- ✅ 完整可运行代码示例(适配 API 6.0.2)。
所有内容均基于 DevEco Studio 4.1 + HarmonyOS 6.0.0 模拟器 实测验证。
1. FA 模型(已废弃)
FA(Feature Ability)模型是 HarmonyOS 早期采用的架构,灵感来自 Android 的 Activity/Service 模式。
FA 模型缺陷:
- 能力(Ability)与 UI 强耦合;
- 多窗口、多实例管理复杂;
- 缺乏统一的生命周期管理;
- 难以支持跨设备协同。
2. Stage 模型(现代标准)
Stage 模型采用 “能力(Ability) + 窗口(Window) + 页面(Page)”三层解耦架构,更符合现代操作系统设计理念。
💡 核心思想:
UI 与业务逻辑分离,窗口与页面解耦,能力可复用。
1. UIAbility:应用的能力入口
是 Stage 模型中承载 UI 的能力单元,相当于 FA 模型中的 ,但职责更清晰。
代码逐行解析:
- :Ability 创建时调用(适合初始化全局状态);
- :窗口创建完成,此时可加载页面;
- :指定主页面路径(相对于 );
- :Ability 销毁前清理资源。
📌 关键点:
UI 不再在 Ability 中定义,而是在独立的 Page 文件中描述(如 )。
2. WindowStage:窗口管理中枢
代表一个应用窗口实例,负责:
- 加载页面内容;
- 管理窗口属性(大小、透明度、焦点);
- 处理窗口生命周期事件。
典型应用场景:
- 全屏游戏:
- 悬浮窗:通过 创建新
- 多窗口协同:一个 Ability 可管理多个
3. Context:上下文获取桥梁
是访问系统服务、资源、能力的统一入口。在 ArkTS 中,通过 获取。
关键 API:
- :在 中获取上下文;
- :获取设备配置(屏幕宽高、DPI、语言等);
- :获取当前 实例;
- :访问字符串、图片等资源。
⚠️ 注意:
中的 必须是 装饰的 struct 实例,否则会报错。
Stage 模型引入了新的配置文件体系,取代 FA 模型的 。
1. :页面路由清单
路径:
作用:
- 声明所有可被 加载的页面路径;
- 路径相对于 ;
- 必须显式注册,否则 会失败。
💡 最佳实践:
- 主页面放第一个;
- 按功能模块组织路径(如 )。
2. :模块级配置(核心!)
路径:
关键字段解析:
字段 说明 主 Ability 名称,必须与 一致 Ability 的 TypeScript 入口文件路径 引用 ,声明页面集合 声明 Ability 的启动意图(如桌面图标点击)
📌 重要变化:
FA 模型的 已被 + 取代,配置更模块化、可读性更强。
3. :构建配置
路径:项目根目录
作用:
- 指定兼容的 SDK 版本();
- 配置签名、产品变体;
- 控制是否仅运行时()。
✅ 适配提示:
你的虚拟机为 API 6.0.2(22) ,此处必须匹配,否则安装失败。
场景:在页面中动态获取屏幕宽高并调整 UI

代码深度解析:
- :在 中安全获取上下文;
- :直接读取屏幕宽高(单位:px),无需异步;
- :获取 实例,用于访问生命周期或窗口;
- :同步获取主窗口(Stage 模型特有);
- :判断当前窗口模式(全屏/悬浮等)。
✅ 优势:
所有操作均为同步调用,无回调地狱,代码简洁可靠。
❓ Q1:如何在非 UIAbility 中获取 Context?
A:通过 Ability 的 属性传递,或使用 (需权限)。
❓ Q2: 能否动态修改?
A:不能。所有页面必须在编译时注册,这是出于安全与性能考虑。
✅ 最佳实践:
- Ability 职责单一:一个 只负责一类功能(如主界面、设置页);
- 避免在 Page 中持有 Ability 引用:通过事件通信,而非直接调用;
- 窗口操作放 豆包 大模型 教程 Ability 中:Page 只负责 UI 描述,窗口管理归 。
🚀 行动建议:
- 新项目必须使用 Stage 模型;
- 老 FA 项目尽快迁移(华为提供迁移工具);
- 深入理解 与 的协作机制。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/278538.html原文链接:https://javaforall.net
