鸿蒙应用开发之stage模型和fa模型的区别

news/2024/10/23 5:45:05/

用户程序框架

用户程序框架是操作系统对应用程序架构的抽象,在鸿蒙系统中,Ability 是应用最基本的抽象单位,是能够完成一个独立功能的应用组件,Ability 可能有用户界面(PA),也可能没有用户界面仅执行后台功能,这由其具体的子类型决定。

FA 模型

FA 模型:自鸿蒙系统早期版本就有的模型,适合简单应用。。FA模型将Ability分为FA(Feature Ability)和PA(Particle Ability)两种类型,其中FA支持Page Ability,PA支持Service Ability、Data Ability、以及FormAbility。

有三个子 类型的 Ability:

  • PageAbility:负责用户界面与用户交互。
  • ServiceAbility:负责后台服务。
  • DataAbiltity:负责数据存储。

Stage 模型

Stage 模型:是为了解决FA模型无法解决的开发场景问题,方便开发者更加方便地开发出分布式环境下的复杂应用。自 API9 新增的模型。是日后长期演进的模型。

Stage模型将Ability分为PageAbility和ExtensionAbility两大类,其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等一系列ExtensionAbility,以便满足更多的使用场景。

Stage 模型的设计出发点

支持多设备和多窗口形态的特点

在系统运行过程中,前台应用的资源占用会被优先保障,与此同时由于应用能力不同而产生的功耗,也需要符合系统整体功耗的要求。Stage模型通过Ability与UI分离、严格的后台管控、基于场景的服务机制及单进程模型来达成这种应用能力与整体系统功耗的平衡。为了保障用户体验,鸿蒙系统上的运行环境对后台应用进行 了有序治理,应用程序不能随意驻留在后台。系统定义了四类后台任务:

支持多设备和多窗口形态的特点

鸿蒙系统是原生支持分布式的操作系统, 应用框架需要从架构设计上使得组件更易于实现迁移和协同。Stage 模型通过 Ability 与 UI 分离,以及 UI 展示与服务能力合一等模型特性,实现这一设计目标。

支持多设备和多窗口形态:

为了支持多种设备形态和更易于实现多种不同的窗口形 态,需要组件管理服务和窗口管理服务在架构层面上是解耦的,从而方便裁剪,更 有利于定制不同的窗口形态。Stage 模型通过重新定义 Ability 生命周期定义,设计 组件管理服务和窗口管理服务的单向依赖来解决这一问题。

Stage 模型与 FA 模型差异

对比FA模型Stage模型
开发方式提供类Web的API,UI开发与Stage模型一致。提供面向对象的开发方式,UI开发与FA模型一致。
引擎实例每个进程内的每个Ability实例独享一个JS VM引擎实例。每个进程内的多个Ability实例共享一个JS VM引擎实例。
包描述文件不支持。支持。
开发方式使用config.json描述HAP包和组件信息,组件必须使用固定的文件名。使用module.json5描述HAP包和组件信息,可以指定入口文件名。
组件提供PageAbility(页面展示),ServiceAbility(服务),DataAbility(数据分享)以及FormAbility(卡片)。提供Ability(页面展示)、Extension(基于场景的服务扩展)。

总结

Stage 模型与 FA 模型最大的区别在于:Stage 模型中多个应用组件共享同一个虚拟机, 而 FA 模型中,每个应用组件独享一个虚拟机。Stage 模型作为鸿蒙系统的主要应用编程模型,开发者通过它能够更加便 利地开发出分布式场景下的复杂应用。其主要优势包括:

  • 为复杂应用设计:多应用组件在运行时共享同一个虚拟机引擎,从而减少复杂应用 运行内存的占用。采用面向对象的开发方式,使得复杂应用代码可读性高、易维护、扩展性强。
  • 程序逻辑与用户界面解耦:窗口部分可单独销毁和重建,窗口与 Ability 可跨设备运行,Ability 可在不启动界面的情况下响应请求。
  • 开放的扩展能力点:支持卡片、输入法、快捷开关、分享、壁纸、长时任务等应用开发。

与 FA 模型相同的是 Stage 模型中的应用组件也是由 Ability 这个基础概念演化而来。在 Stage 模型中,有两类 Ability:

  • UIAbility:负责用户界面和用户交互。
  • ExtensionAbility:负责 UIAbility 之外的事情。事实上,ExtensionAbility 有很多的 具体类型,例如:FormExtension

http://www.ppmy.cn/news/1191682.html

相关文章

【Python 千题 —— 基础篇】乘法计算

题目描述 题目描述 编写一个程序,接受用户输入的两个数字,然后计算这两个数字的乘积,并输出结果。 输入描述 输入两个数字,用回车隔开两个数字。 输出描述 程序将计算这两个数字的乘积,并输出结果。 示例 示例…

【EI会议征稿】第四届生物信息学与智能计算国际学术研讨会(BIC 2024)

第四届生物信息学与智能计算国际学术研讨会(BIC 2024) 2024 4th International Conference on Bioinformatics and Intelligent Computing 2024年第四届生物信息学与智能计算国际学术研讨会 (BIC 2024)将定于2024年1月26-28日在…

如何基于 vue3+el-upload 二次封装上传文件组件到阿里云 oss(附上传进度条)

如何基于 vue3el-upload 二次封装上传文件组件到阿里云 oss 附进度条 一、创建生成全局唯一标识符 方法二、导入计算文件Md5(spark-md5)三、安装依赖ali-oss四、创建导出ali-oss 方法五、创建上传文件 组件(完整代码)六、引入使用组件 一、创建生成全局唯一标识符 方法 在util…

Matplotlib教程(非常详细)(第二部分)

接着上一部分Matplotlib教程(非常详细)(第一部分)接着描述。 十七、Matplotlib双轴图 在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现图像,从而获取更有效的数据。…

PHP短网址短链接生成源码/长链接在线缩短源码/支持黑夜模式

源码简介: PHP短网址短链接生成源码,长链接在线缩短源码,它支持黑夜模式,反应灵敏的设计,优雅简洁的界面,大方简约。PHP源码,强大的短网址生成源码。 简洁、优雅、反应灵敏的设计。创建URL、创…

【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现

上一课: 【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发 文章目录 一、PSoC 5LP主芯片二、PSoC 5LP I/O系统(1) I/O系统特性(2) I/O系统怎样运作?1、I/…

ES-初识ES

文章目录 介绍ElasticSearchElasticSearch的主要功能ElasticSearch的主要特性ElasticSearch的家族成员LogStashKibanaBeats ELK(ElasticSearch LogStash Kibana)的应用场景与数据库集成指标采集/日志分析 安装和配置ElasticSearch一、安装1、下载ES安装…

【计算机网络笔记】传输层——可靠数据传输之流水线机制与滑动窗口协议

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…