介绍
Stage模型是HarmonyOS API 9及以上(鸿蒙Next全面采用) 主推的应用架构模型,是一种 面向应用全生命周期、组件化、模块化的应用设计范式。
类比
- 把鸿蒙应用看作一场“舞台剧”(
Application)。 Stage(舞台)就是应用的运行容器,提供应用运行所需的所有基础环境(如资源管理、生命周期调度、系统交互通道)。- 应用中的各个功能模块(如主界面、设置、支付)就是“演员”(各类Ability组件),在舞台上按剧本(生命周期)完成各自的业务逻辑。
- 导演(系统)负责调度演员上场(创建)、表演(前台运行)、下场(后台/销毁),而舞台(Stage模型)则为导演和演员提供了标准化的协作规则。
简单来说:Stage模型重新定义了鸿蒙应用的组织方式、组件形态和生命周期管理逻辑,让应用结构更清晰、扩展性更强,更适配复杂应用的开发需求。
Stage模型概念图
AbilityStage
每个Entry类型或者Feature类型的 HAP 在运行期都有一个AbilityStage实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。
UIAbility组件
是一种包含UI的应用组件,主要用于 和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。
应用场景
EntryAbility.ets 中的 EntryAbility
WindowStage
每个 UIAbility 实例都会与一个 WindowStage 类实例绑定,该类起到了应用进程内窗口管理器的作用。它包含一个主窗口。也就是说UIAbility实例通过WindowStage持有了一个主窗口,该主窗口为ArkUI提供了绘制区域,可以加载不同的ArkUI页面。
应用场景
EntryAbility.ets 中的 onWindowStageCreate(windowStage: window.WindowStage) 方法
Context
在Stage模型上,Context 及其派生类向开发者提供在运行期可以 调用的各种资源和能力。UIAbility 组件和各种 ExtensionAbility 组件的派生类都有各自不同的 Context 类,他们都继承自基类 Context,但是各自又根据所属组件,提供不同的能力。
