学习鸿蒙一定要搞清楚的几个概念

news/2024/7/7 20:50:52

目录

1、UI框架

2、应用模型

2.1、应用模型介绍

2.2、两种应用模型

2.3、应用模型和UI框架的关系

3、Ability

3.1、Ability介绍

3.2、FA模型的ability

3.3、Stage模型的Ability 


1、UI框架

HarmonyOS提供了一套UI(User Interface,用户界面)开发框架,即方舟开发框架(ArkUI框架),用于快速搭建漂亮的用户界面。

它为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。

  组件文档具体参考:

组件文档icon-default.png?t=N7T8https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/84_u58f0_u660e_u5f0f_u5f00_u53d1_u8303_u5f0f_uff09-0000001427744776-V2

ArkUI框架提供了ArkTS语言开发方式兼容JS的类Web开发方式推荐使用ArkTS语言开发方式。

2、应用模型

2.1、应用模型介绍

应用模型可以理解为HarmonyOS为开发者提供的应用程序开发规范,组织文件入口设置、生命周期、进程线程服务、配置项内容等,具有必备的组件和运行机制,让开发者在统一的模型进行应用开发,更简单、高效。

2.2、两种应用模型

FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主推。

Stage模型: HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。

Stage模型与FA模型最大的区别在于

Stage模型中,多个应用组件共享同一个ArkTS引擎实例;

而FA模型中,每个应用组件独享一个ArkTS引擎实例。

因此在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。

具体模型解读参考地址:

鸿蒙模型文档icon-default.png?t=N7T8https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/application-model-description-0000001493584092-V2

​​​​​​​2.3、应用模型和UI框架的关系

UI框架提供了:ArkTS语言和类JS的web语言方式开发范式。

应用模型提供了:FA模型和Stage模型。

总之,鸿蒙应用开发推荐应用模型使用Stage模型,UI框架使用ArkTS声明式开发范式

3、Ability

3.1、Ability介绍

Ability意为能力,现实中手机有打电话、发短信、玩游戏的能力,电饭煲具有蒸煮煲汤的能力,电视有播放视频的能力,音响有播放音乐的能力。

Ability是HarmonyOS应用程序提供的抽象功能,在HarmonyOS中一切皆能力。

HarmonyOS分布式系统所要实现的不仅仅是单一的能力,它所要达到的效果是能力可以单独存在,可以互相关联,可以彼此调用互相迁移。

比如:可以将手机端播放的视频迁移到智慧屏,通过大屏来观看视频,同时也可以将视频音效分离到外设音响;通过设备A获取设备B的数据;多设备终端数据同步等。

在HarmonyOS分布式系统中,一切皆能力,能力无大小。

在HarmonyOS应用程序中,一个页面即一种能力,如登录页面,即具有登录功能的能力;一个服务即一种能力,如后台播放音乐的能力;一个数据操作即一种能力,如获取数据库数据等。同时能力之间也可以互相调用,通过页面能力来管理后台音效播放与暂停。

一个HarmonyOS应用程序可以包含一个或多个能力,HarmonyOS应用程序可以以能力为单位进行部署。

3.2、FA模型的ability

在HarmonyOS应用程序的FA模型中将能力分为FA(Feature Ability,即元程序)和PA(Particle Ability,即元服务)两种类型,针对两种类型提供了不同的模板可以在日常业务开发中直接使用。

FA: 支持PageAbility组件;

PA:支持ServiceAbility组件和DataAbility组件。

PageAbility

Page 模板的 Ability,用于提供与用户交互的能力。

一个 Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和,可以称之为子页面,可以存在并复用在其他PageAbility上.

跨设备迁移支持将 Page 在同一用户的不同设备间迁移,以便支持用户无缝切换的诉求。

ServiceAbility

Service 模板的 Ability(以下简称 "Service")主要用于后台运行任务(如执行音乐播放文件下载 等),但不提供用户交互界面。

Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行。

DataAbility

Data 模板的 Ability(以下简称“Data”)有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。

Data 既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。

数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。

Data 对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。

3.3、Stage模型的Ability 

在HarmonyOS应用程序的Stage模型中将能力分为:UIAbility组件和ExtensionAbility组件。

UIAbility组件:包含UI界面,提供展示UI的能力,主要用于和用户交互。

ExtensionAbility组件:提供特定场景(如卡片、输入法)的扩展能力,满足更多的使用场景。


http://lihuaxi.xjx100.cn/news/2041677.html

相关文章

BUUCTF crypto做题记录(8)新手向

一、密码学心声 得到信息如下图 背景故事没什么信息,主要看曲谱。大概率不会让我们涉及与音乐有关的内容,题目中也提示说答案是一串字符串,所以我们可以猜测是将曲谱上的数字转化成字符。曲谱中文字提示是用ASCII码进行转换。没有数字8可能是…

08.STL队列

1.基本操作 #include<iostream> #include <stack> #include<queue> using namespace std; queue<int> q; stack<int> stk; void text01(){stk.push(1);stk.push(2);stk.push(3);stk.push(4);q.push(5);q.push(6);q.push(7);q.push(8);cout<…

基于Spring Boot的安康旅游网站的设计与实现,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1760645517548793858

【leetcode刷题之路】面试经典150题(4)——栈+链表

文章目录 7 栈7.1 【哈希表】有效的括号7.2【栈】简化路径7.3 【栈】最小栈7.4 【栈】逆波兰表达式求值7.5 【栈】基本计算器 8 链表8.1 【双指针】环形链表8.2 【双指针】两数相加8.3 【双指针】合并两个有序链表8.4 【哈希表】随机链表的复制8.5 【链表】反转链表 II8.6 【链…

穿越Redis单线程迷雾:从面试场景到技术内核的解读

目录 ​编辑 前言 Redis中的多线程 I/O多线程 Redis中的多进程 结论 延伸阅读 前言 很多人都遇到过这么一道面试题&#xff1a;Redis是单线程还是多线程&#xff1f;这个问题既简单又复杂。说他简单是因为大多数人都知道Redis是单线程&#xff0c;说复杂是因为这个答案…

五、全局scss变量定义及使用

定义 variable.scss 存放全局变量 // base color $blue:#324157; $light-blue:#3A71A8; $red:#C03639; $pink: #E65D6E; $green: #30B08F; $tiffany: #4AB7BD; $yellow:#FEC171; $panGreen: #30B08F;// 默认菜单主题风格 $base-menu-color:#bfcbd9; $base-menu-color-active:#f…

Linux:Jenkins用户权限和管理

1.下载插件 由于Jenkins的默认权限管理并不是很精细所以我们安装一个插件进行权限的一个管理 插件名称为&#xff1a;Role-based Authorization Strategy 安装完插件我们再去配置一下 进入全局安全配置 选择这个Role-Based Strategy策略然后保存 2.创建角色 我们这里主要使…

dp入门(模板题)

解法一&#xff1a; 双指针&#xff0c;没必要开数组直接边输边算&#xff0c;max至少要2个数&#xff0c;补一个数时的特判 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \nint main() {ios::sync_wit…