HarmonyOS 语言基础类库开发指南上线啦!

news2025/1/10 17:11:31

语言基础类库提供哪些功能?多线程并发如何实现?TaskPool(任务池)和 Worker 在实现和使用场景上有何不同?

针对开发者关注的并发等语言基础类库的相关能力,我们在新推出的语言基础类库开发指南中提供了详细的介绍和开发指导,帮助开发者全面了解并发实现、容器类库基础操作、XML 的生成解析与转换等。

本期 HarmonyOS 开发者资料直通车带您快速了解内容干货~

一、语言基础类库文档上新介绍

语言基础类库开发指南为 HarmonyOS 应用开发者提供了常用的基础能力:

○ 提供异步并发和多线程并发的能力。

○ 提供常见的容器类库增、删、改、查的能力。

○ 提供 XML 生成、解析与转换、URI/URL 构造和解析的能力。

○ 提供常见的字符串和二进制数据处理的能力,以及控制台打印的相关能力。

○ 提供获取进程信息和操作进程的能力。

ArkTS 语言基础类库能力示意图

本次上新的语言基础类库开发指南主要针对并发能力、容器类库能力、XML 生成解析与转换这三大方面,全面清晰地讲解了各自的实现机制并提供了对应的具体示例和指导,助力开发者实现应用开发。

开发者可在 HarmonyOS 文档官网,直接搜索想了解的场景和能力,快速直达文档进行浏览。

二、如何实现异步并发和多线程并发

并发是指在同一时间段内,能够处理多个任务的能力。为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS 系统提供了异步并发和多线程并发两种处理策略。

○ 异步并发:是指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。

○ 多线程并发:允许在同一时间段内同时执行多段代码。在主线程继续响应用户操作和更新 UI 的同时,后台也能执行耗时操作,从而避免应用出现卡顿。

ArkTS 支持异步并发和多线程并发。

○ Promise 和 async/await 提供异步并发能力,适用于单次 I/O 任务的开发场景。

○ TaskPool 和 Worker 提供多线程并发能力,适用于 CPU 密集型任务、I/O 密集型任务和同步任务等并发场景。

1、异步并发的实现

Promise 和 async/await 提供异步并发能力,是标准的 JS 异步语法。异步代码会被挂起并在之后继续执行,同一时间只有一段代码执行。

○ Promise 是一种用于处理异步操作的对象,可以将异步操作转换为类似于同步操作的风格,以方便代码编写和维护。Promise 提供了一个状态机制来管理异步操作的不同阶段,并提供了一些方法来注册回调函数以处理异步操作的成功或失败的结果。

○ async/await 是一种用于处理异步操作的 Promise 语法糖,使得编写异步代码变得更加简单和易读。通过使用 async 关键字声明一个函数为异步函数,并使用 await 关键字等待 Promise 的解析(完成或拒绝),以同步的方式编写异步操作的代码。

异步并发能力适用于单次 I/O 任务的场景开发,例如一次网络请求、一次文件读写等操作。

文档链接

异步并发概述:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/async-concurrency-overview-0000001632690002-V3

单次 I/O 任务开发指导:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/single-io-development-0000001681129701-V3

2、多线程并发的实现

ArkTS 提供了 TaskPool 和 Worker 两种并发能力供开发者选择。TaskPool 和 Worker 的作用是为应用程序提供一个多线程的运行环境,用于处理耗时的计算任务或其他密集型任务。可以有效地避免这些任务阻塞主线程,从而最大化系统的利用率,降低整体资源消耗,并提高系统的整体性能。

由于 TaskPool 的工作线程会绑定系统的调度优先级,并且支持负载均衡(自动扩缩容),而 Worker 需要开发者自行创建,存在创建耗时以及不支持设置调度优先级,故在性能方面使用 TaskPool 会优于 Worker,因此大多数场景推荐使用 TaskPool。

TaskPool 偏向独立任务(线程级)维度,超长任务(大于 3 分钟)会被系统自动回收;而 Worker 偏向线程的维度,支持长时间占据线程执行。

TaskPool 和 Worker 各自的实现特点和适用场景存在差异,详细请参见 TaskPool 和 Worker 的对比。

多线程并发能力,适用于 CPU 密集型任务、I/O 密集型任务和同步任务等并发场景。

文档链接

TaskPool 和 Worker 的对比:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/taskpool-vs-worker-0000001632849934-V3

CPU 密集型任务开发指导:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/cpu-intensive-task-development-0000001681369757-V3

I/O 密集型任务开发指导:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/io-intensive-task-development-0000001681489597-V3

同步任务开发指导:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/sync-task-development-0000001632370254-V3

三、容器类库的基础操作

容器类库,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法。

容器类采用了类似静态语言的方式来实现,并通过对存储位置以及属性的限制,让每种类型的数据都能在完成自身功能的基础上去除冗余逻辑,保证了数据的高效访问,提升了应用的性能。

当前提供了线性和非线性两类容器,共 14 种。每种容器都有自身的特性及使用场景。

1、线性容器

线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括 ArrayList、Vector、List、LinkedList、Deque、Queue、Stack 七种。

线性容器,充分考虑了数据访问的速度,运行时(Runtime)通过一条字节码指令就可以完成增、删、改、查等操作。

2、非线性容器

非线性容器实现能快速查找的数据结构,其底层通过 hash 或者红黑树实现,包括 HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray 七种。非线性容器中的 key 及 value 的类型均满足 ECMA 标准。

文档链接

线性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/linear-container-0000001681209893-V3

非线性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/nonlinear-container-0000001632530094-V3

四、XML 生成、解析与转换

XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是 Web 应用程序中经常使用的数据。XML 并不预定义标记。因此,XML 更加灵活,并且可以适用于广泛的应用领域。语言基础类库提供了 XML 相关的基础能力,包括:XML 的生成、XML 的解析和 XML 的转换。

1、XML 生成

XML 模块提供 XmlSerializer 类来生成 XML 文件,输入为固定长度的 Arraybuffer 或 DataView 对象,该对象用于存放输出的 XML 数据。通过调用不同的方法来写入不同的内容,可以生成一份完整的 XML 文件。

2、XML 解析

对于以 XML 作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析 XML 标签和标签值、解析 XML 属性和属性值、解析 XML 事件类型和元素深度三类场景。

XML 模块提供 XmlPullParser 类对 XML 文件解析,输入为含有 XML 文本的 ArrayBufffer 或 DataView,输出为解析得到的信息。

3、XML 转换

将 XML 文本转换为 JavaScript 对象可以更轻松地处理和操作数据,并且更适合在 JavaScript 应用程序中使用。

语言基础类库提供 ConvertXML 类将 XML 文本转换为 JavaScript 对象,输入为待转换的 XML 字符串及转换选项,输出为转换后的 JavaScript 对象。

文档链接

XML 生成:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-generation-0000001681489601-V3

XML 解析:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-parsing-0000001632370258-V3

XML 转换:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-conversion-0000001632690010-V3

五、我们期待您的反馈

以上就是本期为大家准备的 HarmonyOS 语言基础类库开发指南上新内容,希望能够帮助开发者更高效地探索、体验、上手 HarmonyOS。同时,我们十分重视开发者的意见,欢迎各位开发者在 HarmonyOS 应用开发官网积极反馈意见。

我们将持续提升文档体验、丰富和完善内容,感谢各位开发者的支持及信赖,您的满意是我们持续提升文档体验的目标和动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pip报failed to create process

使用pip命令的时候报failed to create process 1、错误提示窗口如下图 2、报这个错误的原因,是因为你改动了python的目录名称或位置。因为,我的电脑是安装了anaconda2和anaconda3的,我想让python2和python3共存,就将anaconda2和a…

一些前端面试思考

回流和重绘 先牢记这句话,回流必将引起重绘,而重绘不一定会引起回流。回流的代价要远大于重绘。 当你给一个元素更换颜色,这样的行为是不会影响页面布局的,DOM树不会变化,但颜色变了,渲染树得重新渲染页面&…

可以充当销售的高品质画册是怎么制作的?

一本优秀的宣传画册就如同一个销售员,具有卓越的灵魂,可以让人达到赏心悦目的视觉效果。如何做出这种高品质的宣传画册呢? 其实很简单,FLBOOK里面汇集了各种各样的宣传画册模板 ,只需一键套用模板制作,你也…

算法通过村第十五关-超大规模|白银笔记|经典问题

文章目录 前言从40个亿中产生一个不存在的整数位图存储数据的原理使用10MB来存储如何确定分块的区间 用2GB内存在20亿的整数中找到出现次数最多的数从100亿个URL中查找的问题40亿个非负整数中找出两次的数。总结 前言 提示:人生之中总有空白,但有时&…

2023年安徽省安全员C证证模拟考试题库及安徽省安全员C证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年安徽省安全员C证证模拟考试题库及安徽省安全员C证理论考试试题是由安全生产模拟考试一点通提供,安徽省安全员C证证模拟考试题库是根据安徽省安全员C证最新版教材,安徽省安全员C证大纲整理…

idea中还原dont ask again

背景 在使用idea打开另外一个项目的时候,一不小心勾选为当前项目而且是不在下次询问,导致后面每次打开新的项目都会把当前项目关闭,如下图所示 下面我们就一起看一下如何把这个询问按钮还原回来 preferences/settings->Appearance&…

安全事件报告和处置制度

1、总则 1.1、目的 为了严密规范XXXXX单位信息系统的安全事件处理程序,确保各业务系统的正常运行和系统及网络的安全事件得到及时响应、处理和跟进,保障网络和系统持续安全运行,确保XXXXX单位重要计算机信息系统的实体安全、运行安全和数据…

数字孪生技术:餐饮业智能化的未来

随着科技的不断进步,数字孪生技术正逐渐渗透到各行各业,为餐饮业带来了颠覆性的改变。这一技术的应用,已经在餐饮行业中崭露头角,并在提高效率、提供更好的客户体验、降低成本等方面发挥了关键作用。 数字孪生技术允许餐饮企业创…

中国人民大学与加拿大女王大学金融硕士:在该奋斗的岁月里,对得起每一寸光阴

在这个快速变化的世界中,金融行业面临不断更新的挑战和机遇。为了应对这些挑战,中国人民大学与加拿大女王大学合作举办金融硕士项目,旨在培养具有国际视野、扎实的金融理论基础和实战经验的专业人才。 中国人民大学和加拿大女王大学金融硕士…

python元组、拆包和装包

注意 元组不能修改元素 元组:如果元素为字符串且元素为1个,必须加一个, ********* t1 (aa,) 下标和切片 in not in for ... in ... 元组转为列表 拆包、装包

【Linux】userdel 命令使用

userdel命令用于删除用户帐号。 语法 userdel [选项] [用户帐号] 命令选项及作用 执行令 userdel--help 执行命令结果 参数 -f, --force 强制删除用户账号 -h, --help 显示此帮助信息并推出 -r, --remove 删除主目录和邮件池 -R, -…

QT_day1

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("登录窗口");this->setWindowIcon(QIcon("C:\\Users\\EDY\\Desktop\\pictrue\\qq.png"));this->setWindowFlag(Qt::…

10月18日 Servlet的相关细节

1.Servlet的生命周期面试高频 Servlet的默认创建是在第一次请求该Servlet的时候才创建,第一次惩罚 Servlet一旦创建,马上调用init()方法,每请求该Servlet,这个Servlet的service()方法就执行一次,一旦web服务器关闭之前,销毁所有的Servlet对象,在销毁servlet对象之前…

【论文检索】 如何使用谷歌学术(Google Scholar)检索文献

目录 0 引言2 如何高效检索 🙋‍♂️ 作者:海码007📜 专栏:论文💥 标题:【论文检索】 如何使用谷歌学术(Google Scholar)检索文献❣️ 寄语:加油毕业!&#x…

如何高效解决工作上的问题?一站式工单系统有什么用?

在单位初次应用一站式工单系统时,除了需要充分了解工单系统的功能特性外,还需要制定相应的工单管理规定,以有效展现系统应用所带来的效果。本文将为您详细介绍工单管理的要求以及对工单解决质量的影响因素。   工单管理的要求: …

React生命周期总结v16+和v16-

React的生命周期 生命周期就函数就是指在某一个时间刻会自动调用执行的函数,React生命周期分为三个阶段 挂载:组件被创建并插入真实dom 渲染(更新):组建的props或state发生变化时触发的组件更新 卸载:组件…

macOS Sonoma 14.1RC(23B73)发布

黑果魏叔10 月 18 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.1 RC更新(内部版本号:23B73),本次更新距离上次发布隔了 7 天。 macOS Sonoma 14.1RC(23B73)的更新内容主要包括以下方面&…

2023年煤气证模拟考试题库及煤气理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年煤气证模拟考试题库及煤气理论考试试题是由安全生产模拟考试一点通提供,煤气证模拟考试题库是根据煤气最新版教材,煤气大纲整理而成(含2023年煤气证模拟考试题库及煤气理论考…

交银国际:拼多多财报预测:主站盈利提升有望带动业绩超预期

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,交银国际今日发布关于拼多多第三季度财报预测:主站盈利提升有望带动业绩超预期的研报。交银国际主要观点如下: 预计拼多多(PDD)第三季度业绩将好于市场预期:我们…

JWT越权访问漏洞

JWT越权访问漏洞 文章目录 JWT越权访问漏洞原文参考 :[xiu](http://www.xiusafe.com/2023/02/08/JWT/)1 靶场搭建:2 JWT的头部组成2.1 头部2.1.1 alg:2.1.2 type: 2.2 payload2.3 签名 3 漏洞复现3.1 攻击点token(第三关)3.2 对token值base64的加密码方式…