首页 > 编程笔记 > 通用技能 阅读:3

鸿蒙中的stage模型(新手必看)

Stage 是 HarmonyOS 3.1(API 9)版本开始新增的模型,也是目前 HarmonyOS 主推且会长期演进的模型。

在 Stage 模型中,由于提供了 AbilityStage、WindowStage 等类作为应用组件和 Window 窗口的“舞台”,因此称这种应用模型为 Stage 模型。

Stage模型的设计思想

Stage 模型之所以成为主推模型,源于其设计思想。Stage 模型的设计基于如下 3 个出发点。

1) 为复杂应用而设计

简化应用复杂度:

2) 支持多设备和多窗口形态

应用组件管理和窗口管理在架构层面解耦:

3) 平衡应用能力和系统管控成本

Stage 模型重新定义了应用能力的边界,以平衡应用能力和系统管控成本:

Stage模型的基本概念

如下图所示展示了 Stage 模型中的基本概念。


图 1 Stage模型概念图

1) AbilityStage

每个 Entry 类型或者 Feature 类型的 HAP 在运行期都有一个 AbilityStage 类实例,当 HAP 中的代码首次被加载到进程中时,系统会先创建 AbilityStage 实例。

2) UIAbility组件和ExtensionAbility组件

Stage 模型提供 UIAbility 和 ExtensionAbility 两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。

① UIAbility 组件是一种包含 UI 的应用组件,主要用于和用户交互。

例如,图库类应用可以在 UIAbility 组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。

UIAbility 组件的生命周期只包含创建、销毁、前台、后台等状态,与显示相关的状态通过 WindowStage 的事件暴露给开发者。

② ExtensionAbility 组件是一种面向特定场景的应用组件。开发者并不能直接从 ExtensionAbility 组件派生,而是需要使用 ExtensionAbility 组件的派生类。

目前 ExtensionAbility 组件有用于卡片场景的 FormExtensionAbility,用于输入法场景的 InputMethodExtensionAbility,用于闲时任务场景的 WorkSchedulerExtensionAbility 等多种派生类,这些派生类都是基于特定场景提供的。

例如,用户在桌面创建应用的卡片,需要应用开发者从 FormExtensionAbility 派生,实现其中的回调函数,并在配置文件中配置该能力。ExtensionAbility 组件的派生类实例由用户触发创建,并由系统管理生命周期。在 Stage 模型上,三方应用开发者不能开发自定义服务,而需要根据自身的业务场景通过 ExtensionAbility 组件的派生类来实现。

3) WindowStage

每个 UIAbility 实例都会与一个 WindowStage 类实例绑定,该类起到了应用进程内窗口管理器的作用。它包含一个主窗口。也就是说,UIAbility 实例通过 WindowStage 持有了一个主窗口,该主窗口为 ArkUI 提供了绘制区域。

4) Context

在 Stage 模型上,Context 及其派生类向开发者提供在运行期可以调用的各种资源和能力。UIAbility 组件和各种 ExtensionAbility 组件的派生类都有各自不同的 Context 类,它们都继承自基类 Context,但是各自又根据所属组件,提供不同的能力。

相关文章