《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS纯血鸿蒙新特性

简介: HarmonyOS 3.1引入了Stage模型,增强ArkTS语言、应用程序框架、Web、ArkUI等子系统能力。新增功能包括Ability框架的Stage开发模型、ArkUI组件能力提升、应用包管理接口、公共基础类库支持Buffer读写、Web服务文档预览及编辑、图形图像编解码支持等。从API 9开始,Stage模型成为主要开发模型,支持更灵活的应用生命周期管理和窗口调度,提供更好的组件与窗口弱耦合体验。此外,HarmonyOS NEXT开发者预览版实现了全面自研,被称为“纯血鸿蒙”,具备自主可控、高度弹性、更强的安全性和隐私保护特性。

自HarmonyOS 3.1开始,HarmonyOS推出应用开发Stage模型,并在ArkTS语言、应用程序框架、Web、ArkUI等子系统能力方面有所更新或增强。

HarmonyOS 3.1开放的功能包括:

  • Ability框架新增Stage开发模型,包含Stage模型生命周期管理、调度、回调、上下文获取、鉴权等。同时增强了应用的运行管理能力。
  • ArkUI开发框架增强了声明式Canvas/XComponent组件能力,增强了组件布局能力及状态管理能力,优化了部分组件的易用性。
  • 应用包管理新增查询应用、Ability和ExtensionAbility相关属性的接口。
  • 公共基础类库新增支持Buffer二进制读写。
  • Web服务新增支持文档类Web应用的文档预览和基础编辑功能,以及cookie的管理和存储管理。
  • 图形图像新增支持YUV、webp图片编解码等能力;新增native vsync能力,支持自绘制引擎自主控制渲染节奏。
  • 媒体服务新增相机配置与预览功能。
  • 窗口服务新增Stage模型下窗口相关接口,增强窗口旋转能力,增强避让区域查询能力。
  • 全球化服务新增支持时区列表、音译、电话号码归属地等国际化增强能力。
  • 公共事件基础能力增强,commonEvent模块变更为commonEventManager。
  • 资源管理服务新增资源获取的同步接口,新增基于名称查询资源值的接口,新增number、float资源类型查询接口,新增Stage模型资源查询方式。
  • 输入法服务新增输入法光标方向常量。

从HarmonyOS NEXT Developer Preview1(API 11)版本开始,HarmonyOS SDK以Kit维度提供丰富、完备的开放能力,涵盖应用框架、系统、媒体、图形、应用服务、AI六大领域:

  • 应用框架相关Kit开放能力:Ability Kit(程序框架服务)、ArkUI(方舟UI框架)等。
  • 系统相关Kit开放能力:Universal Keystore Kit(密钥管理服务)、Network Kit(网络服务)等。
  • 媒体相关Kit开放能力:Audio Kit(音频服务)、Media Library Kit(媒体文件管理服务)等。
  • 图形相关Kit开放能力:ArkGraphics 2D(方舟2D图形服务)、Graphics Accelerate Kit(图形加速服务)等。
  • 应用服务相关Kit开放能力:Game Service Kit(游戏服务)、Location Kit(位置服务)等。
  • AI相关Kit开放能力:Intents Kit(意图框架服务)、HiAI Foundation Kit(HiAI Foundation服务)等。

Stage模型

从API 9开始,Ability框架引入并支持使用Stage模型进行开发。因此,Ability框架模型结构具有两种形态:

  • FA模型:API 8及其更早版本的应用程序只能使用FA模型进行开发。
  • Stage模型:从API 9开始。Stage模型只支持使用ArkTS语言进行开发。

Stage模型是HarmonyOS 3.1开始新增的模型,也是目前HarmonyOS主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。本书也主要介绍以Stage模型为主的开发方式。

Ability组件的生命周期

Ability生命周期切换以及和AbilityStage、WindowStage之间的调度关系如下图1-7所示。

Stage模型定义Ability组件的生命周期,只包含创建、销毁、前后台等状态,而将与界面强相关的获焦、失焦状态都放在WindowStage之中,从而实现Ability与窗口之间的弱耦合;在服务侧,窗口管理服务依赖于组件管理服务,前者通知后者前后台变化,这样组件管理服务仅感知前后台变化,不感知焦点变化。

需要注意的是,在Ability中存在两个与WindowStage相关的生命周期状态onWindowStageCreate和onWindowStageDestroy,这两个生命周期状态的变化仅存在于具有显示能力的设备中。前者表示WindowStage已经创建完成,开发者可以通过执行loadContent的操作设置Ability需要加载的页面;后者在WindowStage销毁后调用,以便开发者对资源进行释放。

ArkUI开发框架

ArkUI(方舟UI框架)是一个简洁的、高性能、支持跨设备的UI框架,提供了丰富的应用界面开发所需能力。

ArkUI包括UI组件、动画、绘制、交互事件、JS API扩展机制等。

ArkUI在HarmonyOS NEXT版本带来如下能力的新增或增强:

  • 针对三方框架场景提供组件NDK接口,涵盖组件创建、属性设置、事件注册、自定义能力、组件树构建。
  • 自定义节点能力增强,提供FrameNode的自定义能力以及节点代理能力,并提供基础组件、手势、事件的Modifier能力。
  • Navigation新增页面生命周期:支持onWillShow和onWillHide页面生命周期、转场动画支持打断和接续、页面内容扩展到状态栏、单例跳转能力和自定义动效能力增强。
  • Video/XComponent/Canvas组件支持AI能力,支持文本和实体识别。 Text等文本类组件支持属性字符串。
  • 支持使用NativeWindowEventFilter能力拦截按键事件。
  • 支持使用画中画功能。
  • 新增提供智慧多窗的适配指导

ArkTS编程语言

ArkTS(方舟编程语言)提供HarmonyOS应用开发语言ArkTS相关的公共核心基础能力接口,包括并发、容器、流、文本编解码、XML、URI、Buffer等能力。

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS基于TypeScript(简称TS)语言扩展而来,是TS的超集。这也是为什么ArkTS的原名叫eTS, 是extend TypeScript的简写。ArkTS继承了TS的所有特性,并且ArkTS在TS基础上还扩展了声明式UI能力,让开发者以更简洁、更自然的方式开发高性能应用。

ArkTS在HarmonyOS NEXT版本带来如下能力的新增或增强:

  • Taskpool新增支持任务组、串行队列、长时任务、取消任务、宿主通信、设置任务监听、设置任务依赖关系,新增受限worker能力。
  • 新增流基础能力,包括流读、写、双工和转换。
  • 增强Uri、TextDecoder、StringDecoder等模块能力。
  • Taskpool、TextDecoder、buffer、uri等模块接口性能优化。

ArkWeb

ArkWeb(方舟Web)提供了在应用中使用Web页面的能力,支持应用集成Web页面、小程序、浏览器网页浏览等场景的混合开发。

ArkWeb在HarmonyOS NEXT阶段带来如下能力的新增或增强:

  • 网页加载与页面导航:新增支持打开UniversalLink链接、应用托管网络、应用级自定义DNS。
  • 网页渲染与显示:新增支持object/embed标签的同层渲染与事件传递、长网页渲染模式、网页长截图、扩展安全区域与H5避让区查询能力、预览PDF(内置PDFView扩展)。
  • UX一致性增强:增强支持文本选择智能选词、图片长按识文、列表滑动曲线与原生一致。
  • 网页媒体:新增支持显示HEIF图片、网页视频托管、网页音视频与摄像头控制。
  • 网页安全隐私:新增广告过滤能力支持定义自定义拦截规则,智能防跟踪及限制三方Cookie的访问,网页高级安全模式。
  • W3C兼容性增强:支持设置meta标签的viewport属性,支持鼠标悬停提示tooltip、datalist元素,支持自定义光标样式等。
  • 性能增强:新增ArkWeb组件动态创建与上下树、JavaScript接口性能提升、V8引擎性能优化。
  • DFX增强:新增支持独立Web GPU进程提升应用稳定性,应用可使能独立Web渲染进程,提升应用安全与稳定性,无障碍常用功能,增强网页性能度量接口(LCP/FMP),生成crashpad崩溃信息。

“纯血鸿蒙”解读

2023年8月4日,在华为开发者大会上,华为发布HarmonyOS Next开发者预览版本。据介绍,HarmonyOS NEXT系统底座全线自研,去掉了传统的AOSP代码,不再兼容安卓开源应用,仅支持鸿蒙内核和系统的应用,因此也被称为“纯血鸿蒙”。

HarmonyOS NEXT可以理解为HarmonyOS面向未来的、自研程度更高的下一代鸿蒙系统。

“纯血鸿蒙”具有以下特点:

  • 全面自研:鸿蒙系统通过全新的架构和核心技术实现了全面自研,正式脱离了Android的影响,成为真正独立的操作系统。
  • 自主可控:鸿蒙内核、文件系统、编程语言和编译器等均为华为自主研发,确保了系统的安全性和稳定性。
  • 高度弹性:鸿蒙内核具有高度弹性的架构,能够根据硬件需求灵活组合操作系统能力,满足各种终端的需求。
  • 鸿蒙内核:作为“纯血鸿蒙”的核心,鸿蒙内核提供了更安全、更流畅、更弹性的系统基础。其服务之间能够更好地隔离,从架构上保证了系统的安全性。
  • 文件系统:使用自研的文件系统,进一步提升了系统的稳定性和性能。
  • 编程语言与编译器:鸿蒙还自研了编程语言和编译器,确保了开发过程的独立性和高效性。
  • 系统隔离:鸿蒙内核的服务之间隔离性更好,从架构上保证了系统的安全性,获得了全球首张智能终端领域CC EAL 6+证书。
  • 隐私保护:新的隐私保护机制极大减少了权限弹窗,提升了用户的隐私安全体验。

综上所述,“纯血鸿蒙”是华为在操作系统领域的一次重要突破和创新成果。它不仅代表了华为在自研技术方面的实力和决心,也为全球科技界带来了新的惊喜和期待。


 

参考资料

  • 《跟老卫学HarmonyOS开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社)
  • “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”(https://coding.imooc.com/class/674.html
  • 《鸿蒙HarmonyOS应用开发入门》(清华大学出版社)
  • “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(https://coding.imooc.com/class/843.html
  • 《鸿蒙HarmonyOS应用开发从入门到精通战(第2版)》(北京大学出版社)
  • 《鸿蒙之光HarmonyOS NEXT原生应用开发入门》(清华大学出版社)
目录
相关文章
|
13天前
|
移动开发 JavaScript 前端开发
HarmonyOS鸿蒙应用开发——探索原生与H5通信框架DSBridge
HarmonyOS版DSBridge是一个桥梁库,允许鸿蒙原生环境与JavaScript交互。它兼容Android和iOS的第三方DSBridge核心功能,支持同步和异步调用、命名空间API管理、进度回调及页面关闭监听等功能。主要特性包括适配鸿蒙NEXT版本、支持串行异步并发任务、兼容DSBridge 2.0与3.0版本JS脚本,并提供类形式集中管理API及自定义页面组件注册。源码仓库:HarmonyOS版 - DSBridge-HarmonyOS。安装命令为`ohpm install @hzw/ohos-dsbridge`。通过该库,开发者可以方便地在鸿蒙系统中实现原生与JS的高效交互。
77 1
|
7天前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
123 81
|
11天前
|
编解码 人工智能 开发框架
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS技术理念
HarmonyOS在万物智联时代提出了三大技术理念:一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。通过多端开发环境、多端开发能力和多端分发机制,HarmonyOS显著降低了开发成本,提升了开发效率。开发者只需一套工程即可实现多设备应用的高效开发与部署。元服务作为轻量化程序实体,支持跨设备无缝流转,提供便捷服务。同时,HarmonyOS内置强大的AI能力,助力开发者快速实现应用智能化。
66 16
|
6天前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
63 47
Harmony OS开发-ArkTS语言速成二
|
8天前
|
API 索引
鸿蒙开发:实现一个超简单的网格拖拽
实现拖拽,最重要的三个方法就是,打开编辑状态editMode,实现onItemDragStart和onItemDrop,设置拖拽移动动画和交换数据,如果想到开启补位动画,还需要实现supportAnimation方法。
60 13
鸿蒙开发:实现一个超简单的网格拖拽
|
7天前
|
索引
鸿蒙开发:自定义一个股票代码选择键盘
金融类的软件,特别是股票基金类的应用,在查找股票的时候,都会有一个区别于正常键盘的键盘,也就是股票代码键盘,和普通键盘的区别就是,除了常见的数字之外,也有一些常见的股票代码前缀按钮,方便在查找股票的时候,更加方便的进行检索。
鸿蒙开发:自定义一个股票代码选择键盘
|
7天前
鸿蒙开发:自定义一个英文键盘
实现方式呢,有很多种,目前采用了比较简单的一种,如果大家采用网格Grid组件实现方式,也是可以的,但是需要考虑每行的边距以及数据,还有最后两行的格子占位问题。
鸿蒙开发:自定义一个英文键盘
|
8天前
|
存储 JSON 数据库
鸿蒙元服务项目实战:备忘录内容编辑开发
富文本内容编辑我们直接使用RichEditor组件即可,最重要的就是参数,value: RichEditorOptions,通过它,我们可以用来设置样式,和获取最后的富文本内容,这一点是很重要的。
鸿蒙元服务项目实战:备忘录内容编辑开发
|
8天前
|
开发框架 JavaScript 前端开发
Harmony OS开发-ArkT语言速成一
本文介绍ArkTS语言,它是鸿蒙生态的应用开发语言,基于TypeScript,具有静态类型检查、声明式UI、组件化架构、响应式编程等特性,支持跨平台开发和高效性能优化。ArkTS通过强化静态检查和分析,提升代码健壮性和运行性能,适用于Web、移动端和桌面端应用开发。关注我,带你轻松掌握HarmonyOS开发。
31 5
Harmony OS开发-ArkT语言速成一
|
7天前
|
前端开发 API 数据库
鸿蒙开发:异步并发操作
在结合async/await进行使用的时候,有一点需要注意,await关键字必须结合async,这两个是搭配使用的,缺一不可,同步风格在使用的时候,如何获取到错误呢,毕竟没有catch方法,其实,我们可以自己创建try/catch来捕获异常。
鸿蒙开发:异步并发操作

热门文章

最新文章