一、背景
鸿蒙开发中目前都是基于Stage模型进行开发的,本文主要总结下个人对Stage模型的理解
二、基本概念
知道Stage模型"是什么","解决什么问题"
2.1、是什么?
鸿蒙 Stage 模型是鸿蒙 4.0 及以后主推的新一代应用架构,替代了早期的 FA 模型
2.2、解决什么问题?
核心是通过 "分层管控 + 多进程隔离 + 组件扩展",让应用更适合复杂业务、全场景设备(手机 / 平板 / 车机),同时提升稳定性和扩展性。
三、核心概念

以一家公司来类比这张图的关联性:
Application:比作整个公司--->(是公司的 "法人主体",所有部门都属于它)
AbilityStage:公司的总经办--->负责全公司的统一初始化、资源统筹
UIAbility:公司的 "业务部门"--->(比如销售部,负责具体页面 / 业务)
ExtensionAbility:公司的 "支持部门"--->(比如行政部,负责备份、卡片等扩展功能)
备注:AbilityStage与UIAbility和ExtensionAbility不是包含与被包含的关系,而是同属于Application的"下属组件",只是分工不同(AbilityStage 管全局,UIAbility 管页面,ExtensionAbility 管扩展功能)
总结核心关系:
Application(运行实例) → 包含 AbilityStage(全局助手)、UIAbility(页面组件)、ExtensionAbility(扩展组件),三者是 "顶层容器 - 全局助手 - 业务组件" 的从属关系
核心组件:AbilityStage + UIAbility + ExtensionAbility
AbilityStage:负责应用级全局事务,承载全局初始化,统一管理 UIAbility/ExtensionAbility 的创建流程(可选组件,业务复杂时用)
UIAbility:包含UI的应用组件,主要用于和用户交互(所有项目必须使用)
ExtensionAbility:面向特定场景的应用组件(根据业务场景选择性使用)
比如:
当项目需要"桌面服务卡片",需要创建FormExtensionAbility
当项目需要"长期后台运行的无UI业务",需要创建ServiceExtensionAbility
当项目需要"应用数据备份",需要创建BackupExtensionAbility
核心概念总结:Bundle、Application、Context、WindowStage、ArkUI 页面
|-------------|------------|---------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 核心概念 | 对应阶段 | 核心定位 | 与其他概念的关联 | 开发中实际使用场景 |
| Bundle | 安装部署阶段(静态) | 应用的「安装包文件」,是应用的静态载体(对应 .app 结尾文件) | 1. 包含所有 HAP(功能模块)、HSP(共享包)、配置文件、静态资源; 2. 安装后可生成 Application(动态运行实例)。 | 1. 开发完成后通过 DevEco Studio 打包生成 .app 包(即 Bundle),发给测试人员进行测试; 2. 配置 app.json5/module.json5 间接定义 Bundle 结构(权限、组件、资源); 3. 上线时提交的正式安装包即为 Bundle。 |
| Application | 运行阶段(动态) | 应用的「运行时全局实例」,是 Bundle 安装启动后的 "活应用",顶层全局容器。 | 1. 由 Bundle 安装启动后生成,销毁后应用退出; 2. 包含所有应用进程、Ability 组件、全局资源; 3. 在无自定义 AbilityStage 时,通过主 UIAbility(如 EntryAbility)的生命周期间接实现全局管控。 | 1. 通过主 UIAbility(如 EntryAbility)的 onCreate () 执行应用全局初始化(如 SSE 配置、日志工具初始化); 2. 通过 UIAbility 的 onForeground ()/onBackground () 关联 Application 前后台状态; 3. 全局资源(如公共缓存)的承载容器,无需手动创建,由系统维护。 |
| Context | 运行阶段(动态) | 应用的「上下文工具类」,提供运行时的资源访问、能力调用接口,是 "开发利器"。 | 1. 继承自基类 Context,UIAbility/ExtensionAbility 有专属派生类(如 UIAbilityContext); 2. 依附于 UIAbility/Application,无法脱离组件独立存在; 3. 可获取 WindowStage、首选项、公共事件等能力。 | 1. 获取首选项(PreferencesUtil),存储 / 读取登录信息 2. 发送 / 订阅公共事件,实现跨组件通信; 3. 获取系统静态资源(如图片、字符串),配置 WindowStage;4. 启动其他 UIAbility,传递 Want 参数。 |
| WindowStage | 运行阶段(动态) | 「窗口管理器」,绑定单个 UIAbility 实例,管理应用窗口(绘制区域),是 "ArkUI 页面的载体"。 | 1. 每个 UIAbility 实例对应一个 WindowStage,UIAbility 销毁则 WindowStage 销毁; 2. 持有一个主窗口,为 ArkUI 页面提供绘制区域; 3. 可通过UIAbilityContext 获取。 | 1. 设置沉浸式页面、隐藏导航栏(对应你提到的窗口配置); 2. 加载 / 切换 ArkUI 页面(loadContent() 加载首页); 3. 监听窗口状态变化(如窗口大小调整、前后台切换); 4. 配置窗口背景、亮度等属性。 |
| ArkUI 页面 | 运行阶段(动态) | 「用户界面载体」,基于 ArkUI 框架构建,是 "用户交互的直接入口"。 | 1. 依附于 WindowStage 的主窗口,由 WindowStage 加载和展示; 2. 归属于 UIAbility 实例,受 UIAbility 生命周期管控; 3. 可通过页面路由实现跨页面跳转。 | 1. 构建所有用户交互界面(如:首页、我的页面); 2. 实现页面逻辑(如 tab 切换、SSE 推送消息展示); 3. 绑定页面状态变量,实现 UI 数据驱动更新; 4. 通过路由跳转,实现页面间数据传递。 |
四、Stage模型核心优势
1、多进程隔离,稳定性强
支持同一应用内不同组件运行在独立进程
作用:避免单个功能异常导致整个应用闪退
2、分层化架构设计,代码结构清晰
提供明确的层级划分:Application->AbilityStage(应用全局初始化和配置)-> ExtensionAbility(扩展功能)/
UIAbility(页面逻辑和页面载体)->WindowStage (窗口管理)->Page(UI页面)
作用:模块解耦,维护方便,团队协作更高效
3、窗口与页面解耦、适配高效
WindowStage专门管理窗口,支持多窗口
作用:同一套业务逻辑适配不同屏幕尺寸,窗口适配不影响页面逻辑
4、上下文分级,权限安全
Context分级体系:
• UIAbilityContext → UI相关操作(首选项、公共事件)
• ExtensionContext → 扩展功能资源访问
• AbilityStageContext → 全局资源管理
• ApplicationContext → 应用全局信息
作用:避免权限滥用,减少误操作风险,提升应用安全性
5、官方主推架构,生态适配性强
Stage模型是鸿蒙主推架构,原生支持鸿蒙4.0+所有新特性
新特性支持:
分布式能力增强/卡片服务框架/原子化服务/原服务能力
6、性能优化佳
系统可按优先级调度不同进程资源;
应用退后台时,优先回收非核心进程资源,保留UI进程状态,既节省内存,又能让应用再次启动时快速恢复
作用:减少UI卡顿,降低设备资源占用,提升用户使用体验
7、更好的调试工具支持
- DevEco Studio:对Stage模型有更好的代码提示和模板
- 预览器:支持Stage模型的实时预览
- 调试工具:提供了更丰富的调试选项
五、总结Stage模型
核心:Stage 模型的本质是把应用拆成 "静态安装包(Bundle)→动态运行实例(Application)→业务组件(UIAbility/ExtensionAbility)→界面 / 工具(ArkUI/Context)" 的分层结构,让复杂应用更好开发、更稳定。
- 定位:鸿蒙 Stage 模型是 4.0 后主推的应用架构,替代旧 FA 模型,是复杂应用、全场景设备的主流开发模式。
- 核心流程:开发时用 UIAbility(页面)+ ExtensionAbility(扩展功能)搭业务,打包成 Bundle(.app 包),安装启动后生成 Application(运行实例),通过 Context/WindowStage 管理资源和界面。
- 核心价值:靠多进程隔离提升稳定性,分层组件让业务更清晰,是鸿蒙生态下高扩展性、高可靠性的应用架构。