HarmonyOS Next鸿蒙开发:FA模型和Stage模型

287 阅读4分钟

鸿蒙系统中的FA模型和Stage模型是两种不同的应用开发模型,它们在设计思想、组件类型、资源共享和内存占用、系统管理和控制能力,以及模型演进和主推程度等方面存在显著的差异。

FA模型

**FA模型是“Feature Ability”(功能能力)******的缩写,是HarmonyOS早期版本开始支持的模型。该模型基于微内核架构,通过IPC(进程间通信)和分布式软总线完成轻量化、松耦合的模块间通信和服务调用。其主要特点包括:

  • 分布式调度: 支持分布式调度,具有实时计算和交互控制的特性。
  • 独立引擎实例: 每个应用组件独享一个ArkTS引擎实例,没有实现组件间的资源共享和内存优化。
  • 系统管理能力: 在系统管理和控制能力方面,FA模型没有像Stage模型那样强调对后台进程的有序治理和严格管理。

应用程序包结构(FA模型)

image.png

Stage模型

Stage模型是HarmonyOS 3.1及后续版本主推且会长期演进的模型,它提供了一种更好的开发方式,更适用于多设备、分布式场景。 于Stage模型开发的应用,经编译打包后,其应用程序包结构如下图应用程序包结构(Stage模型)所示。开发者需要熟悉应用程序包结构相关的基本概念。

在开发态,一个应用包含一个或者多个Module,可以在DevEco Studio工程中创建一个或者多个Module。Module是HarmonyOS应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。Module分为“Ability”和“Library”两种类型,“Ability”类型的Module对应于编译后的HAP(Harmony Ability Package);“Library”类型的Module对应于HAR(Harmony Archive),或者HSP(Harmony Shared Package)。 一个Module可以包含一个或多个UIAbility组件,如下图所示。 转存失败,建议直接上传图片文件

Stage模型 1.一个应用程序(App)可以分成多个模块(Module),模块(Module)编译后的产物叫做 HAP (Harmony Ability Package) 2.模块(Module)分成两种,一种是主模块(Entry),另一种是功能模块(Feature)。同一个应用,同一设备类型只支持一个主模块。功能模块可以是没有,也可以有多个。 3.一个应用可以有多个 HAP,所有的HAP合在一起成为 一个 Bundle,而bundleName就是应用的唯一标识。 4.后期项目上架到应用商店时,需要将Bundle打包成一个.app后缀的文件。

image.png

Stage模型的主要特点包括:

  • 组件共享: 多个应用组件共享同一个ArkTS引擎实例,使得应用组件之间可以方便地共享对象和状态,同时减少复杂应用运行对内存的占用。
  • 多窗口管理: Stage模型将应用的界面划分为多个独立的Stage,每个Stage都有自己的窗口和界面布局,可以单独显示、隐藏和关闭。不同的Stage之间可以进行切换和互动,提供了更加丰富的用户交互方式。
  • 组件类型: 提供UIAbility和ExtensionAbility两种类型的组件。UIAbility组件用于与用户交互,而ExtensionAbility组件则提供场景化的服务扩展机制,但不提供自定义服务的能力。
  • 生命周期管理: UIAbility组件的生命周期包含创建、销毁、前台、后台状态,与界面强相关的获焦、失焦状态都放在窗口管理对象中,实现与窗口之间的弱耦合。
  • 系统管理能力: 对后台应用进程进行了有序治理,应用程序不能随意留驻在后台,同时应用后台行为受到严格管理,以防止恶意应用行为。

应用程序包结构(Stage模型)

image.png

总结 FA模型和Stage模型在鸿蒙系统中各有其应用场景和优势。FA模型更适合于需要高度独立性和轻量级通信的场景,而Stage模型则更适用于多设备、分布式场景下的复杂应用开发。随着HarmonyOS的不断演进,Stage模型将成为未来应用开发的主流方向。开发者在选择使用哪种模型时,应根据具体的应用需求、系统环境和技术要求进行综合考虑。