共计 1653 个字符,预计需要花费 5 分钟才能阅读完成。
「鸿蒙学习笔记」Stage 模型 – 概述
Stage 模型:HarmonyOS 3.1 Develper Preview 版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,因为提供了 AbilityStage、WindowStage 等类作为利用组件和 Window 窗口的“舞台”,因而称这种利用模型为 Stage 模型。
设计思维
Stage 模型之所以成为主推模型,源于其设计思维。Stage 模型的设计基于如下出发点。
为简单利用而设计
- 多个利用组件共享同一个 ArkTS 引擎(运行 ArkTS 语言的虚拟机)实例,利用组件之间能够不便的共享对象和状态,同时缩小简单利用运行对内存的占用。
- 采纳面向对象的开发方式,使得简单利用代码可读性高、易维护性好、可扩展性强。
反对多设施和多窗口状态
利用组件治理和窗口治理在架构层面解耦:
- 便于系统对利用组件进行裁剪(无屏设施可裁剪窗口)。
- 便于零碎扩大窗口状态。
- 在多设施(如桌面设施和挪动设施)上,利用组件可应用同一套生命周期。
均衡利用能力和零碎管控老本
Stage 模型从新定义利用能力的边界,均衡利用能力和零碎管控老本。
- 提供特定场景(如卡片、输入法)的利用组件,以便满足更多的应用场景。
- 规范化后盾过程治理:为保障用户体验,Stage 模型对后盾利用过程进行了有序治理,应用程序不能随便驻留在后盾,同时利用后盾行为受到严格管理,避免歹意利用行为。
概述
- UIAbility 组件和 ExtensionAbility 组件
Stage 模型提供 UIAbility 和 ExtensionAbility 两种类型的组件,这两种组件都有具体的类承载,反对面向对象的开发方式。
UIAbility 组件是一种蕴含 UI 界面的利用组件,次要用于和用户交互。例如,图库类利用能够在 UIAbility 组件中展现图片瀑布流,在用户抉择某个图片后,在新的页面中展现图片的具体内容。同时用户能够通过返回键返回到瀑布流页面。UIAbility 的生命周期只蕴含创立 / 销毁 / 前台 / 后盾等状态,与显示相干的状态通过 WindowStage 的事件裸露给开发者。
ExtensionAbility 组件是一种面向特定场景的利用组件。
- WindowStage
每个 UIAbility 类实例都会与一个 WindowStage 类实例绑定,该类提供了利用过程内窗口管理器的作用。它蕴含一个主窗口。也就是说 UIAbility 通过 WindowStage 持有了一个窗口,该窗口为 ArkUI 提供了绘制区域。
- Context
在 Stage 模型上,Context 及其派生类向开发者提供在运行期能够调用的各种能力。UIAbility 组件和各种 ExtensionAbility 派生类都有各自不同的 Context 类,他们都继承自基类 Context,然而各自又依据所属组件,提供不同的能力。
- AbilityStage
每个 Entry 类型或者 Feature 类型的 HAP 在运行期都有一个 AbilityStage 类实例,当 HAP 中的代码首次被加载到过程中的时候,零碎会先创立 AbilityStage 实例。每个在该 HAP 中定义的 UIAbility 类,在实例化后都会与该实例产生关联。开发者能够应用 AbilityStage 获取该 HAP 中 UIAbility 实例的运行时信息。
利用与组件配置
在基于 Stage 模型开发的利用我的项目代码下,都存在一个 app.json5 及一个或多个 module.json5 这两种配置文件。
app.json5 次要蕴含以下内容:
- 利用的全局配置信息,蕴含利用的包名、开发厂商、版本号等根本信息。
- 特定设施类型的配置信息。
module.json5 次要蕴含以下内容:
- Module 的根本配置信息,例如 Module 名称、类型、形容、反对的设施类型等根本信息。
- 利用组件信息,蕴含 UIAbility 组件和 ExtensionAbility 组件的形容信息。
- 利用运行过程中所需的权限信息。
参考
- https://developer.harmonyos.com/cn/docs/documentation/doc-gui…