欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 鸿蒙学习总结

鸿蒙学习总结

2024/10/26 13:17:33 来源:https://blog.csdn.net/Liuxb_zao/article/details/143183043  浏览:    关键词:鸿蒙学习总结

       鸿蒙(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  模拟器来说更加流畅,强大。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com