鸿蒙学习总结

       鸿蒙(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的自定义组件。
    • 它接受两个属性textcolor,分别用于设置按钮上的文本和背景颜色,默认颜色为#007AFF
    • build方法中,创建一个按钮,并设置其文本为传入的text属性值,背景颜色为传入的color属性值,以及字体大小为 16。
  • 然后定义了一个名为MyComponent的组件作为入口。
    • build方法中,使用Column布局组件垂直排列子组件。
    • 两次使用CustomButton组件,传入不同的textcolor属性值,创建两个不同样式的自定义按钮。

动态扩展 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 元素。

状态管理和渲染控制例子

在这个例子中:

  • 定义了两个状态变量countshowMessage
  • incrementCount方法用于增加count的值,并且当count是 5 的倍数时,将showMessage设置为true,否则设置为false
  • build方法中:
    • 使用Column布局组件。
    • 显示count的值和一个根据showMessage状态决定是否显示的文本。
    • 有一个按钮,点击时调用incrementCount方法来更新状态并触发 UI 的重新渲染。

通过这种方式,实现了状态管理和基于状态的渲染控制。当状态变量count变化时,会自动更新 UI 上显示的数值,并且根据特定条件控制是否显示额外的文本信息。

        从以上例子可以看到,ArkTS的声明式开发模式比传统更加高效,不需要编写大量代码处理 UI 页面。与 JS 对比,JS通常需要依赖复杂的 DOM操作来更新 UI,ArkTS 则通过更直接的渲染机制,省去了部分中间的 DOM 管理环节,使得渲染更新链路更为精简,占用内存更少,从而提供更好的应用性能,同时也增加了可读性。

        学习 ArkTS可以按照以下流程:

  1.  熟练掌握基础语法;
  2. 了解鸿蒙系统的基础知识;
  3. 学习声明式 UI语法;
  4. 掌握自定义组件开发;
  5. 深入理解 ArkTS 中的状态管理机制。掌握响应式编程;
  6. 学习数据绑定和动态 UI 更新;
  7. 掌握分布式应用开发特性;
  • 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 可以访问和修改这些笔记。

        生命周期管理:

  • 创建阶段(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  模拟器来说更加流畅,强大。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【electron8】electron实现“图片”的另存为

注:该列出的代码,都在文章内示例出 1. 另存为按钮事件: const saveAsHandler async () > {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的,所以我需要根据接口返回的路…

着色器的认识

知识了解: 着色器: 顶点着色器: 用来描述顶点的特性,如位置、颜色等,其中,顶点:是指二维或三维空间中的一个点比如交点或者端点。 片元着色器:用来进行逐片元处理操作,比如光照、颜色叠加等&…

如何将原本打开Edge呈现出的360浏览器,更换成原本的Edge页面或者百度等其他页面

每次打开Edge浏览器,都会呈现出360浏览器的页面,很烦。以下将说明如果将呈现出的360浏览器,更换成原本的Edge页面或者百度等其他页面。 1.找到你的控制面板,点击卸载程序。 2. 找到360安全卫士,右键单击更改/卸载。 3…

Android 应用申请 Google MBA权限

Google Case链接:89 > 34810 > 30025 > 155353 > Handheld > MBA Policies 按照指引填写模板 This bug is for the approval of MBAs under [13.2.2 Pregrant permissions policy](https://docs.partner.android.com/gms/policies/domains/mba#mba-…

基于 ThinkPHP+Mysql 灵活用工_灵活用工系统_灵活用工平台

基于 ThinkPHPMysql 灵活用工灵活用工平台灵活用工系统灵活用工小程序灵活用工源码灵活用工系统源码 开发语言 ThinkPHPMysql 源码合作 提供完整源代码 软件界面展示 一、企业管理后台 二、运用管理平台 三、手机端

Web 核心指标优化之 INP 篇

这篇文章是我在公司做 INP 优化经验分享的演讲稿。 大家好,今天我要做的分享是关于 INP 的一些优化经验。 概念 首先,什么叫 INP 呢。 INP 的全称叫 Interaction to Next Pain ,翻译过来就是从交互到下一次绘制的延迟。这是 Google 提出来的…

Footprint Analytics 现已支持 TRON 链上数据分析

我们很高兴地宣布,全球最大的区块链网络之一 TRON(波场)已经成功接入 Footprint Analytics!通过这次集成,开发者、分析师和区块链爱好者们现在可以使用 Footprint 的专业分析工具,深入挖掘 TRON 生态系统的…

考到了PMP证书之后,我的电话被打爆了....

考到了PMP之后,万年不见响的手机竟也开始频繁来call了~🙅 一般是哪些人,会因为什么事来找?本期小赛就给大家讲讲是啥情况~ 一、HR打电话邀请面试 在没有PMP证书的时候,自己投出去的简历往往是石沉大海,杳…

UI设计软件全景:13款工具助力创意实现

选择恰当的UI设计工具对于创建美观且用户体验良好的应用程序界面至关重要。不同的APP功能可能需要不同的界面设计软件,但并非所有工具都需要精通,熟练掌握几个常用的就足够了。以下是13款APP界面设计软件,它们能够为你的团队提供绘制APP界面所…

使用iframe内嵌grafana监控页面

grafana监控大盘被普遍采用,但一个缺点就是一次只能打开一个页面,切换页面很不便,如果能一次同时展示多个页面就好了,如图: 使用tab标签,结合iframe,把各个监控页面全放在一起,可以…

人脸美颜 API 对接说明

本文将介绍一种 人脸美颜 API 对接说明,它可以通过用户上传一张人脸图片(最多能处理一张图片中最大的五张人脸信息),精准定位五官,实现美肤、亮肤、祛痘等美颜功能。 接下来介绍下 人脸美颜 API 的对接说明。 申请流…

【HTML】之基本标签的使用详解

HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础。它不是一种编程语言,而是一种标记语言,用于描述网页的内容和结构。本文将带你了解HTML的基础知识,并通过详细的代码示例和中文注释进行讲…

论文略读:Can We Edit Factual Knowledge by In-Context Learning?

EMNLP 2023 第一个探索in-context learning在语言模型知识编辑方便的效果 传统的知识编辑方法通过在包含特定知识的文本上进行微调来改进 LLMs 随着模型规模的增加,这些基于梯度的方法会带来巨大的计算成本->论文提出了上下文知识编辑(IKE&#xff0…

HarmonyOS第一课——HarmonyOS介绍

HarmonyOS第一课 HarmonyOS介绍 HarmonyOS是新一代的智能终端操作系统(泛终端服务的载体); 智慧互联协同,全场景交互体验; 核心技术理念: 一次开发 多次部署: 预览 可视化开发UI适配 事件交…

51单片机之按键驱动

1.按键简介 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开。开发板上使用的按键及内部简易图如下图所示:   按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态, 如果…

如何用示波器测实时时钟信号和主时钟信号

使用示波器测量实时时钟信号(RTC)和主时钟信号(Main Clock Signal)的步骤如下: 1. 准备工作 选择合适的探头:使用高品质的示波器探头,通常10X衰减探头适合大部分情况。校准探头:确…

端口号和ip地址一样吗?区别是什么

在网络通信的世界里,端口号和IP地址是两个不可或缺的概念,它们各自扮演着独特的角色,共同维系着数据在网络中的有序传输。然而,对于许多初学者而言,这两者往往容易被混淆,认为它们是同一事物的不同表述。那…

【Linux】nohup 命令

【Linux】nohup 命令 1. 语法格式2. 实例3. 查找后台进程 nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时&#x…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持UDP和TCP传输协议

随着科技的飞速发展,视频技术已成为现代社会不可或缺的一部分,广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。在这一背景下,NVR管理平台EasyNVR作为一款高效、灵活的视频监控管理系统,正经历着前所未有的发展机遇…

【传知代码】短期电力负荷(论文复现)

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 备注前言介绍问题背景复现:一. 多维特征提取的提取框架:二. 论文中进行性能测试的MultiTag2Vec-STLF模型:三…