在应用程序开发时通常需要使用应用模型来提供必备的组件和运行机制,有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。接下来谈谈鸿蒙应用开发当中的两种模型:
Stage模型: HarmonyOS 3.1推出 也就是API9 , 是目前主推且会长期演进的模型。
FA模型: FA(Feature Ability)模型:HarmonyOS早期版本开始支持的模型,已经不再主推。
区别: Stage模型与FA模型最大的区别在于:
-
Stage模型中,多个应用组件共享同一个ArkTS引擎实例;
-
而FA模型中,每个应用组件独享一个ArkTS引擎实例。
-
因此在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
-
Stage模型作为主推的应用模型,开发者通过它能够更加便利地开发出分布式场景下的复杂应用。
由于在之后的鸿蒙开发版本中将不推荐使用FA模型,并且官方也明确了以后都长期主推Stage模型,所以我在这里详细介绍一下Stage模型具体拆分成哪些概念来理解:
Stage模型是鸿蒙OS为了适应多设备和分布式场景而设计的一种新的应用模型。在Stage模型中,应用程序被组织成一系列的舞台(Stages),每个舞台代表一个应用的一个界面或一个功能模块。Stage模型重新定义了应用能力的边界,提供了对多设备和多窗口形态的支持,使得应用组件可以使用同一套生命周期,便于系统对应用组件进行管理和优化。
在Stage模型中,我们有两种主要的组件:UIAbility和ExtensionAbility。
UIAbility就像一个带有用户界面的应用块,可以直接和用户进行互动,比如展示图片、处理用户的选择操作等。它的生命周期主要是创建、销毁、在前台运行和转到后台这些状态。而和显示相关的状态,比如窗口的显示和隐藏,是通过WindowStage的事件来通知开发者的。
ExtensionAbility是针对特定用途的组件,比如做卡片、输入法或者后台任务。开发者并不是直接去创建ExtensionAbility,而是使用它的特定子类。这些子类是针对特定场景设计的,比如你想在桌面上放一个应用卡片,就要用FormExtensionAbility,然后实现必要的函数。这些组件的生命周期是由系统管理的,你只需要实现相关的逻辑。
WindowStage是管理UIAbility窗口的东西,每个UIAbility都有一个WindowStage,就像是应用内的窗口管理器。它有一个主窗口,这个窗口就是ArkUI用来绘制的区域。
Context是一个运行时可以用来访问资源和能力的东东。不同的组件有不同的Context,它们都继承自同一个基类,但是根据组件的不同,会有不同的能力。
AbilityStage是给HAP用的,每个HAP在运行时都会有一个AbilityStage实例。当你第一次加载HAP的代码到进程中时,系统会先创建一个AbilityStage实例。
简而言之:
-
UIAbility是一种包含UI的应用组件,主要用于和用户交互。
-
ExtensionAbility是针对特定用途的组件,开发者用它的子类实现特定功能。
-
WindowStage是管理UIAbility窗口的。
-
Context是应用上下文,是运行时访问资源和能力的。
-
AbilityStage是组件容器,是HAP运行时的一个实例。