HarmonyOS Stage 模型架构解析与应用指南
自 HarmonyOS 3.1 起,华为正式引入 Stage 模型,并逐步废弃 FA(Feature Ability)模型。在后续版本中,Stage 模型已成为官方唯一推荐的应用架构标准。采用 Stage 模型可更好地支持多设备协同、分布式窗口及后台任务管理等高级特性。
一、Stage 模型 vs FA 模型:架构演进
FA 模型是 HarmonyOS 早期采用的架构,能力(Ability)与 UI 强耦合,多窗口与生命周期管理较为复杂。Stage 模型采用**'能力(Ability)+ 窗口(Window)+ 页面(Page)'三层解耦架构**,更符合现代操作系统设计理念。
| 维度 | FA 模型 | Stage 模型 |
|---|---|---|
| 入口 | MainAbility | UIAbility |
| UI 管理 | Ability 直接控制 UI | WindowStage 管理窗口,Page 描述 UI |
| 生命周期 | 分散在 Ability 中 | 由 UIAbility 与 WindowStage 协同管理 |
| 多实例支持 | 实现复杂 | 原生支持(分屏、悬浮窗等) |
| 跨设备协同 | 需手动实现 | 内置 Continuation 能力 |
核心思想:UI 与业务逻辑分离,窗口与页面解耦,能力可复用。
二、Stage 模型三大核心概念
1. UIAbility:应用的能力入口
UIAbility 是 Stage 模型中承载 UI 的能力单元,职责比早期的 MainAbility 更加清晰。
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
console.info('UIAbility onCreate');
}
onWindowStageCreate(windowStage: window.WindowStage) {
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
console.error(`Failed to load content: ${JSON.stringify(err)}`);
return;
}
console.info('Content loaded successfully');
});
}
onDestroy() {
console.info('UIAbility onDestroy');
}
}
生命周期说明:
onCreate():Ability 创建时调用,适合初始化全局状态。onWindowStageCreate(windowStage):窗口创建完成,此时可调用windowStage.loadContent()加载主页面。onDestroy():Ability 销毁前清理资源。
关键点:UI 不再在 Ability 中定义,而是在独立的 Page 文件中描述。


