Harmony基本原理(2)——Stage模型
应用程序包
- 应用所对应的软件包文件,称为“应用程序包”
- 系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制
- 系统还屏蔽了不同的芯片平台的差异
多Module设计机制
模块化开发
- 应用通常会包含多种功能,将每个功能模块作为一个独立的Module进行开发
- 可以包含源代码、资源文件、第三方库、配置文件等
- Module可以独立编译,实现特定的功能
Module类型 | 说明 |
---|---|
Ability类型 | 1. 每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件 2. HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包 3.1. entry类型的Module:编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP 3.2. 编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。 |
Library类型的Module | 1. 实现代码和资源的共享 2.1 Static Library:静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive) 2.2 Shared Library:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package) |
多设备适配
Stage模型概述
概述
Stage模型是
- Stage模型中,多个应用组件共享同一个ArkTS引擎实例,在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。[1]
- Stage模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。
设计思路
flowchart TB; target1((应用能力与系统性能平衡)) target2((原生支持组件级迁移与协同)) target3((支持多设备、多窗口)) method1[Ability与UI分离] method2[后台管理] method3[基于场景的服务机制] method4[单进程模型] method5[UI与服务统一的Ability组件] method6[Ability生命周期定义] method7[组件管理与窗口管理解耦] target1-->method1 target1-->method2 target1-->method3 target1-->method4 target2-->method1 target2-->method5 target3-->method6 target3-->method7
整体结构
各类组件
Satge模型提供UIAbility和ExtensionAbility两种组件,有具体类承载,支持面向对象。
其中,UIAbility、ExtensionAbility等组件详情如下:
UIAbility组件
- 包含UI的应用组件,主要用于和用户交互
- 生命周期只包含创建/销毁/前台/后台等状态
ExtensionAbility组件
- 面向特定场景的应用组件
- 需要使用ExtensionAbility的派生类
- ExtensionAbility派生类实例由用户触发创建,并由系统管理生命周期
WindowStage类
- 与显示相关的状态通过WindowStage的事件暴露给开发者
- 每个UIAbility类实例都会与一个WindowStage类实例绑定
- 提供了应用进程内窗口管理器的作用
- 包含一个主窗口。UIAbility通过WindowStage持有了一个主窗口,该主窗口为ArkUI提供了绘制区域
Context
- Context及其派生类向开发者提供在运行期可以调用的各种资源和能力
- UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类
AbilityStage
- 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例
- HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例
- 每个在该HAP中定义的UIAbility类,在实例化后都会与该实例产生关联
- 可通过AbilityStage获取该HAP中UIAbility实例的运行时信息
Stage模型开发流程
flowchart LR A[应用组件开发] --> B[进程模型] B --> C[线程模型] C --> D[应用配置]
相关概念补充
HAP(Harmony Ability Package)
- 应用安装与运行的单元
- 将code、resources、config、std library等打包为模块
- 分为entry(应用入口、基础功能)和feature(动态特性)两类
- 单个HAP(无ExtensionAbility):1个Entry+m个feature。推荐1个UIAbility+m个页面
- 多个HAP:n个Entry+m个feature。每个HAP1个UIAbility或ExtensionAbility
HAR(HarmonyOS Ability Resource)[2]
- 静态共享包,用于封装和共享代码、资源和第三方库,允许开发者将独立的功能模块打包并发布为一个可重用的单元
- 不仅可以包含代码文件,还可以包括UI布局、图片、配置文件、第三方库等资源
- 实现代码的模块化和复用
HSP(Harmony Shared Package)
- 动态共享包
- 与宿主应用同进程、命名空间、生命周期
参考文献:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 kaiyu's blog!
评论