鸿蒙学习总结
鸿蒙(HarmonyOS),做为国产自主研发设计的第一个操作系统,从开放测试以来一直备受关注。其纯血鸿蒙版(HarmonyOS NEXT)也于进日发布。过去的一段时间里,我站在一个移动开发者的角度对HarmonyOS进行了系统性的了解与基础性的学习。前段时间通过 WebView加载 H5 的方式上架了一款应用。接下来我将以个人的理解对目前已知的鸿蒙知识做一个简单的总结。
-
HarmonyOS架构图

以上就是鸿蒙系统的架构图,从下到上。内核层使用的是自主研发的 LiteOS,Next版本则是彻底替换掉了 Linux。纯血鸿蒙发布之前的鸿蒙系统兼容 Android 应用一个是由于Linux另一个则是使用了虚拟机运行。
系统服务层是鸿蒙核心能力的集合,分布式任务调度对应用的任务进行管理,根据设备的性能、负载等情况,将任务合理地分配到不同的设备上执行,提高系统的整体性能和效率。例如,在玩大型游戏时,可以将一部分计算任务分配到性能更强的设备上进行处理。
分布式数据管理实现了数据在不同设备之间的分布式存储、同步和访问。不同设备上的应用可以方便地访问和操作其他设备上的数据,保证了数据的一致性和完整性。比如,用户在手机上编辑的文档,可以实时同步到平板上继续编辑。
分布式软总线,这是鸿蒙系统实现分布式能力的关键技术之一,负责在不同设备之间建立高速、低时延、安全可靠的通信通道,使得设备之间能够像一个整体一样协同工作,实现设备间的无缝连接和数据传输。例如,手机可以通过分布式软总线快速连接到智慧屏、平板等设备,实现多屏协同、文件互传等功能。
方舟多语言运行时子系统 提供了 C、C++、JS 等多语言的运行时环境和基础的系统类库,为应用程序的运行提供了支持。
公共基础库子系统包含了一些通用的基础功能模块和算法,如字符串处理、数学运算、加密解密等,为系统的各个部分提供基础的功能支持。
还有多模型,图形,安全,AI ,穿戴,智慧屏这些子系统构建了完整的鸿蒙生态。
框架层中 UI框架(ArkUI方舟开发框架)是一套构建分布式应用界面的声明式UI开发框架。用户程序框架主要指多语言支持,支持 Java、C/C++、ArkTS;Ability框架是应用所具备能力的抽象,是应用程序的重要组成部分。一个应用可以包含一个或多个 Ability,它是鸿蒙系统中应用程序的基本执行单元,用于实现特定的业务功能。
-
ArkTS编程语言
ArkTS是开发应用程序的重要语言,它是基于 TypeScript 进行扩展的语言,主要用于构建具有声明式用户界面(UI)的应用。
语法特点:声明式 UI 描述、自定义组件、动态扩展 UI 元素、状态管理和渲染控制。
声明式 UI 描述的例子:

@Entry和@Component注解表示这是一个可作为应用入口的组件。@State注解的message变量用于存储要显示的文本,当这个变量的值发生变化时,会自动触发 UI 的更新。build方法中使用Column布局组件来垂直排列子组件。- 首先显示一个
Text文本组件,内容为message变量的值,并设置了字体大小和上边距。 - 然后有一个
Button按钮组件,文本为 “Change Message”,当点击按钮时,会调用onClick中的函数,将message的值修改为 “Message changed!”,从而触发 UI 的更新,显示新的文本内容。
自定义组件例子:

- 首先定义了一个名为
CustomButton的自定义组件。- 它接受两个属性
text和color,分别用于设置按钮上的文本和背景颜色,默认颜色为#007AFF。 - 在
build方法中,创建一个按钮,并设置其文本为传入的text属性值,背景颜色为传入的color属性值,以及字体大小为 16。
- 它接受两个属性
- 然后定义了一个名为
MyComponent的组件作为入口。- 在
build方法中,使用Column布局组件垂直排列子组件。 - 两次使用
CustomButton组件,传入不同的text和color属性值,创建两个不同样式的自定义按钮。
- 在
动态扩展 UI元素例子:

在这个例子中:
- 定义了一个名为
DynamicUI的组件。 @State声明了两个状态变量:items是一个字符串数组,初始值为一个元素;showMore是一个布尔值,用于控制是否显示额外的文本。addItem方法用于向items数组添加新的元素。toggleShowMore方法用于切换showMore的值。- 在
build方法中:- 使用
Column布局组件。 - 通过
ForEach遍历items数组,为每个元素创建一个Text文本组件并显示。 - 根据
showMore的值决定是否显示 “More items are shown.” 的文本。 - 有两个按钮,一个用于添加新元素,一个用于切换显示状态。
- 使用
这样,当点击 “Add Item” 按钮时,会动态地向 UI 中添加新的元素;当点击 “Toggle Show More” 按钮时,会动态地显示或隐藏额外的文本内容,实现了动态扩展 UI 元素。
状态管理和渲染控制例子:

在这个例子中:
- 定义了两个状态变量
count和showMessage。 incrementCount方法用于增加count的值,并且当count是 5 的倍数时,将showMessage设置为true,否则设置为false。- 在
build方法中:- 使用
Column布局组件。 - 显示
count的值和一个根据showMessage状态决定是否显示的文本。 - 有一个按钮,点击时调用
incrementCount方法来更新状态并触发 UI 的重新渲染。
- 使用
通过这种方式,实现了状态管理和基于状态的渲染控制。当状态变量count变化时,会自动更新 UI 上显示的数值,并且根据特定条件控制是否显示额外的文本信息。
从以上例子可以看到,ArkTS的声明式开发模式比传统更加高效,不需要编写大量代码处理 UI 页面。与 JS 对比,JS通常需要依赖复杂的 DOM操作来更新 UI,ArkTS 则通过更直接的渲染机制,省去了部分中间的 DOM 管理环节,使得渲染更新链路更为精简,占用内存更少,从而提供更好的应用性能,同时也增加了可读性。
学习 ArkTS可以按照以下流程:
- 熟练掌握基础语法;
- 了解鸿蒙系统的基础知识;
- 学习声明式 UI语法;
- 掌握自定义组件开发;
- 深入理解 ArkTS 中的状态管理机制。掌握响应式编程;
- 学习数据绑定和动态 UI 更新;
- 掌握分布式应用开发特性;
-
Ability介绍
Ability 是鸿蒙操作系统中应用程序所具备能力的抽象,是应用开发的基本单元。它类似于安卓系统中的 Activity、Service 等组件,但又具有更灵活和广泛的功能。一个鸿蒙应用可以包含一个或多个 Ability,每个 Ability 都能独立地实现特定的业务功能,这些功能可以是面向用户的交互功能,也可以是在后台运行的服务功能等。
类型与功能:
- Feature Ability(FA):
- 用户交互功能:这是具有用户界面的 Ability 类型,主要用于和用户进行交互。例如,在手机应用中,用户看到的各种界面如登录界面、主界面、设置界面等通常都是由不同的 Feature Ability 实现的。
- 页面管理与跳转:FA 提供了 Page Ability,用于构建应用的页面。多个 Page Ability 之间可以通过路由机制进行页面跳转。这使得应用能够根据用户的操作,如点击按钮、滑动屏幕等,在不同的页面之间进行切换,以实现复杂的业务逻辑和用户流程。例如,在购物应用中,从商品列表页面跳转到商品详情页面,再跳转到购物车页面等操作都是通过 Page Ability 的路由来实现的。
- Particle Ability(PA):
- Service Ability:
- 后台任务执行:这种类型的 Ability 主要在后台运行任务。例如,当用户在音乐播放应用中切换到后台时,音乐播放的任务可以通过 Service Ability 继续执行,而不会因为应用界面不可见而中断。它还可以用于执行文件下载、数据同步等任务。比如,应用可以在后台使用 Service Ability 持续从服务器下载更新文件,而用户可以同时进行其他操作。
- 跨应用协作:Service Ability 还可以用于跨应用的协作。不同的应用可以通过连接到同一个 Service Ability 来共享服务或进行数据交互。例如,一个地图应用和一个打车应用可以通过共享位置相关的 Service Ability 来实现更好的用户体验。
- Data Ability:
- 数据访问与管理:Data Ability 用于对外部提供统一的数据访问抽象。它支持数据的存储、查询、修改等操作。应用可以通过 Data Ability 来管理自己的数据,如用户信息、配置数据等。并且,Data Ability 可以实现跨设备、跨应用的数据共享。例如,一个笔记应用可以通过 Data Ability 存储用户的笔记内容,并且在用户的其他设备上,通过相同的 Data Ability 可以访问和修改这些笔记。
- Service Ability:
生命周期管理:
- 创建阶段(onCreate):当 Ability 被创建时,会调用
onCreate方法。这个阶段主要用于进行一些初始化的操作,如加载资源、初始化变量等。例如,在一个游戏应用的 Feature Ability 中,onCreate阶段可以用于加载游戏的地图、角色模型等资源。 - 启动阶段(onStart):在 Ability 启动时,
onStart方法被调用。这个阶段可以用于准备展示界面或者启动后台任务等操作。对于 Feature Ability,可能会涉及到界面的布局加载;对于 Service Ability,可能会开始执行后台任务。 - 激活阶段(onActive):当 Ability 处于活动状态时,
onActive方法会被调用。对于有用户界面的 Feature Ability,这个阶段表示用户正在与该界面进行交互;对于 Service Ability,这个阶段表示其正在高效地执行后台任务。例如,在音乐播放应用的 Service Ability 中,onActive阶段可以用于确保音乐播放的流畅性。 - 暂停阶段(onInactive):当 Ability 失去焦点但仍可能恢复时,进入暂停阶段,
onInactive方法被调用。例如,当用户切换到其他应用,但原应用的 Service Ability 还在运行时,这个 Service Ability 就可能进入暂停阶段。此时,可以进行一些资源的暂时释放或者降低任务执行的优先级等操作。 - 停止阶段(onStop):当 Ability 完全停止时,
onStop方法被调用。这个阶段可以用于释放资源,如关闭文件、释放内存等。例如,当一个后台下载文件的 Service Ability 完成下载任务后,如果不再需要,就可以在onStop阶段进行资源释放。 - 销毁阶段(onDestroy):当 Ability 被销毁时,
onDestroy方法会被调用。这个阶段主要用于最后的资源清理工作,如删除临时文件、注销监听器等。
其它:
- 鸿蒙的打包流程也与 Android 不同,鸿蒙应用主要打包成 HAP(HarmonyOS Ability Package)格式;签名也比 Android 多几个步骤,具体的签名打包方式都有详细的说明。
- 鸿蒙模拟器对比 Android studio 模拟器来说更加流畅,强大。
相关文章:
鸿蒙学习总结
鸿蒙(HarmonyOS),做为国产自主研发设计的第一个操作系统,从开放测试以来一直备受关注。其纯血鸿蒙版(HarmonyOS NEXT)也于进日发布。过去的一段时间里,我站在一个移动开发者的角度对HarmonyOS进…...
如何修改文件创建时间?六个超简单修改方法介绍
怎么修改文件创建时间?在信息安全与隐私保护的领域里,每一个细节都可能成为泄露敏感信息的突破口。文件的创建时间,这个看似微不足道的数据点,实则可能蕴含着重要的时间线索,对于不希望被外界窥探其内容或来源的个人及…...
【MySQL 保姆级教学】内置函数(9)
内置函数 1. 日期函数1.1 日期函数的种类1.2 示例1.3 日期的转换 2. 字符串函数2.1 种类2.2 示例 3. 数学函数3.1 种类3.2 向上取整和向下取整3.3 示例 4. 其他函数4.1 查询当前用户/数据库4.2 ifnull(val1,val2)4.3 md5()函数4.4 password()函数 1. 日期函数 1.1 日期函数的种…...
华为大咖说丨如何通过反馈机制来不断优化大模型应用?
本文分享自时习知 作者:袁泉(华为AI数据工程专家)全文约3015字,阅读约需8分钟 大模型应用正式投入使用后,存在一个较为普遍的情况:在利用“大模型提升业务运营效率”的过程中,业务部门和IT团队…...
上海亚商投顾:沪指缩量震荡 风电、传媒股集体走强
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天缩量震荡,三大指数集体收涨,北证50则跌超7%,超80只北交所个股跌逾…...
三磺酸-Cy3.5-羧酸在水相环境中表现良好,能够提高成像的清晰度和准确性
一、基本信息 中文名称:三磺酸-Cy3.5-羧酸,水溶性Cy3.5 羧基 英文名称:trisulfo-Cy3.5-carboxylic acid,trisulfo-Cy3.5-COOH,trisulfo-Cyanine3.5-COOH 分子式:C41H44N2NaO11S3- 分子量:85…...
国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播
在当今社会,视频监控已经成为公共安全、企业管理、智能城市建设等领域不可或缺的一部分。然而,由于不同厂家和平台之间的兼容性问题,视频监控系统的联网和整合面临巨大挑战。为了解决这个问题,国家制定了《公共安全视频监控联网系…...
mac nwjs程序签名公证(其他mac程序也一样适用)
为什么需要公证 mac os14.5之后的系统,如果不对应用进行公证,安装,打开,权限使用上都会存在问题,而且有些问题你强制开启(sudo spctl --master-disable)使用后可能会有另外的问题, …...
网络应用技术 实验一:路由器实现不同网络间通信(华为ensp)
目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验任务及要求 1、任务 1:完成网络部署 2、任务 2:设计全网IP 地址 3、任务 3:实现全网主机互通 六、实验步骤 1、在ensp中部署网络 2、配置各主机 IP地址、子网掩…...
使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南
使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南 初识 Qt 和 gRPC 什么是 Qt?什么是 gRPC? 项目结构概述创建 proto 文件定义 API 下载 api.proto 文件解析 proto 文件 1. package 与 option 语句2. 消息类型定义 TrafficSpeedUserUserSt…...
【mysql进阶】5-事务和锁
mysql 事务基础 1 什么是事务 事务是把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失败,这组SQL语句可以是⼀条也可以是多条。再来看⼀下转账的例⼦,如图: 在这个例⼦中&a…...
指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
定义一些关键字代表的意义 STRUCT: 代表需要输入的格式化的信息IMPORT: 代表需要输入的外部信息, 这些信息通常是客观的SEARCH: 需要从某地比如数据库检索搜集信息SUM: 一种宏观的加和操作, 比如两个股票户ABAB,微观上实际还是有差异GROUP: …...
【论文分享】居住开放空间如何影响老年人的情感:使用可穿戴传感器的现场实验
本研究首次通过跟踪实时、高分辨率的环境暴露和情绪反应来研究和比较不同质量住宅社区中的居住开放空间(ROS)与老年人情绪之间关联;并采用混合方法,包括可穿戴传感器和问卷调查,收集了中国广州老年居民的客观和主观住宅…...
入门 | Prometheus+Grafana 普罗米修斯
#1024程序员节|征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 (1)、数据来源 数据来源,也就是需要监控的数据…...
制作Ubuntu根文件系统
制作Ubuntu根文件系统: gunzip ubuntu-base-22.04.5-base-arm64.tar.gz mkdir ubuntu tar xvpf ubuntu-base-22.04.5-base-arm64.tar -C ubuntu 挂载目录、复制dns、执行chroot cd /userdisk/ubuntu cp /etc/resolv.conf ./etc/resolv.conf mount --bind /dev ./d…...
16个最佳测试管理工具(2024)
1、前言 测试管理解决方案能够帮助你捕捉测试需求、设计测试用例、生成测试执行报告、管理资源等。软件质量的疏忽可能导致公司遭受巨大的经济损失、声誉损害或面临诉讼风险。一个优秀的测试管理工具是防止缺陷和故障进入生产环节的关键。 2、PractiTest 功能特点&#x…...
基于知识图谱的猕猴桃种植技术问答系统
猕猴桃怎么种植更高效、病虫害怎么防治、最适宜的气候条件有哪些?作为一名科技研发迷,这些问题是不是听起来很有挑战性?咱们今天就来聊聊一个特别的研发项目——基于知识图谱的猕猴桃种植技术问答系统。这不仅仅是一个农业项目,它…...
Swift雨燕蜂窝无线通信系统介绍
本文博客链接:jdh99-CSDN博客,作者:jdh,转载请注明. 1. 概述 物联网小无线通信技术众多,其中大多是小范围小规模的无线通信技术,而行业难点是如何做到广覆盖、大容量、低功耗。 针对以上难点,宏讯物联研发了Swift雨燕蜂窝无线通信技术&…...
【ZZULI】数据库第二次实验
【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…...
Javaee---多线程(一)
文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
