「鸿蒙学习笔记」Stage模型--概述

Stage模型:HarmonyOS 3.1 Develper Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,因为提供了AbilityStage、WindowStage等类作为利用组件和Window窗口的“舞台”,因而称这种利用模型为Stage模型。

设计思维

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

  1. 为简单利用而设计

    • 多个利用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,利用组件之间能够不便的共享对象和状态,同时缩小简单利用运行对内存的占用。
    • 采纳面向对象的开发方式,使得简单利用代码可读性高、易维护性好、可扩展性强。
  2. 反对多设施和多窗口状态

    利用组件治理和窗口治理在架构层面解耦:

    • 便于系统对利用组件进行裁剪(无屏设施可裁剪窗口)。
    • 便于零碎扩大窗口状态。
    • 在多设施(如桌面设施和挪动设施)上,利用组件可应用同一套生命周期。
  3. 均衡利用能力和零碎管控老本

    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...