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

news/2024/7/21 10:24:00 标签: harmonyos, 华为

用户程序框架

用户程序框架是操作系统对应用程序架构的抽象,在鸿蒙系统中,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.niftyadmin.cn/n/5143400.html

相关文章

Macroscope安全漏洞检测工具简介

学习目标: 本介绍旨在帮助感兴趣者尽快了解 Macroscope,这是一款用于安全测试自动化和漏洞管理的企业工具。 全覆盖应用程序安全测试: 如下图所示,如果使用多种互补工具(SAST/DAST/SCA 等)来检测应用程序…

Fabric二进制添加排序节点

目录 一、准备orderer11.1、注册orderer11.2、登记orderer11.3、登记orderer1的tls 二、添加orderer1的tls到系统通道三、获取最新的系统通道配置四、启动orderer1五、添加orderer1的endpoint到系统通道六、添加orderer1的tls到应用通道七、添加orderer1的endpoint到应用通道八…

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式: 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 完整代码: /*编写以下函数 1.在一个二维数组中形成如以下形式的 n 阶矩阵: 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 2.去掉…

[nodejs] 爬虫加入并发限制并发实现痞客邦网页截图

今晚想给偶像的相册截个图,避免某一天网站挂了我想看看回忆都不行,用的是js的木偶师来爬虫台湾的部落格,效果图大概是这样,很不错 问题来了.我很贪心, 我想一次性把相册全爬了,也就是并发 ,这个人的相册有19个!!我一下子要开19个谷歌浏览器那个什么进程, 然后程序就崩了, 我就想…

@ConfigurationProperties注解使用详解

在Spring框架中,ConfigurationProperties注解是用于将配置文件中的属性绑定到Java对象中的重要工具。它使得开发者能够将外部配置与应用程序代码解耦,提高代码的可维护性和可扩展性。本文将详细介绍ConfigurationProperties注解的用法、特点、作用以及示…

账户信息。

<!DOCTYPE html> <html><head><title>账户信息</title><meta http-equiv"content-type" content"text/html; charsetutf-8"/><meta name"apple-mobile-web-app-capable" content"yes"/><…

RK3588平台开发系列讲解(项目篇)基于yolov5的物体识别

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、实验环境二、源码&工具三、环境搭建3.1、安装 Miniconda3.2、创建 RKNN 虚拟环境3.3、安装 RKNN-ToolkitLite 2 软件包3.4、安装 opencv四、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将…

计算机服务器中了mallad勒索病毒怎么办,勒索病毒解密恢复

警惕&#xff0c;警惕&#xff0c;企业主多警惕&#xff0c;新型网络勒索病毒出来了&#xff0c;近期&#xff0c;云天数据恢复中心&#xff0c;接到了某企业的求助&#xff0c;企业的计算机服务器中了mallad后缀勒索病毒&#xff0c;导致企业计算机系统瘫痪&#xff0c;无法正…