首页 > 其他分享 >OpenHarmony—ArkTS卡片运行机制

OpenHarmony—ArkTS卡片运行机制

时间:2024-02-19 21:55:25浏览次数:21  
标签:OpenHarmony ArkTS 鸿蒙 卡片 渲染 应用 使用

实现原理

图1 ArkTS卡片实现原理

在这里插入图片描述

  • 卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置,当前仅系统应用可以作为卡片使用方。
  • 卡片提供方:提供卡片显示内容的应用,控制卡片的显示内容、控件布局以及控件点击事件。
  • 卡片管理服务:用于管理系统中所添加卡片的常驻代理服务,提供formProvider接口能力,同时提供卡片对象的管理与使用以及卡片周期性刷新等能力。
  • 卡片渲染服务:用于管理卡片渲染实例,渲染实例与卡片使用方上的卡片组件一一绑定。卡片渲染服务运行卡片页面代码widgets.abc进行渲染,并将渲染后的数据发送至卡片使用方对应的卡片组件。

图2 ArkTS卡片渲染服务运行原理

在这里插入图片描述

与JS卡片相比,ArkTS卡片支持在卡片中运行逻辑代码,为确保ArkTS卡片发生问题后不影响卡片使用方应用的使用,ArkTS卡片新增了卡片渲染服务用于运行卡片页面代码widgets.abc,卡片渲染服务由卡片管理服务管理。卡片使用方的每个卡片组件都对应了卡片渲染服务里的一个渲染实例,同一应用提供方的渲染实例运行在同一个虚拟机运行环境中,不同应用提供方的渲染实例运行在不同的虚拟机运行环境中,通过虚拟机运行环境隔离不同应用提供方卡片之间的资源与状态。开发过程中需要注意的是globalThis对象的使用,相同应用提供方的卡片globalThis对象是同一个,不同应用提供方的卡片globalThis对象是不同的。

ArkTS卡片的优势

卡片作为应用的一个快捷入口,ArkTS卡片相较于JS卡片具备如下几点优势:

  • 统一开发范式,提升开发体验和开发效率。

OpenHarmony在2022年发布了声明式范式的UI开发框架,而卡片还延续了css/hml/json三段式类Web范式的开发方式,提高了开发者的学习成本,提供ArkTS卡片能力后,统一了卡片和页面的开发范式,页面的布局可以直接复用到卡片布局中,提升开发体验和开发效率。

图3 卡片工程结构对比

在这里插入图片描述

  • 增强了卡片的能力,使卡片更加万能。
  • 新增了动效的能力:ArkTS卡片开放了属性动画和显式动画的能力,使卡片的交互更加友好。
  • 新增了自定义绘制的能力:ArkTS卡片开放了Canvas画布组件,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果。
  • 允许卡片中运行逻辑代码:开放逻辑代码运行后很多业务逻辑可以在卡片内部自闭环,拓宽了卡片的业务适用场景。

ArkTS卡片的约束

ArkTS卡片相较于JS卡片具备了更加丰富的能力,但也增加了使用卡片进行恶意行为的风险。由于ArkTS卡片显示在使用方应用中,使用方应用一般为桌面应用,为确保桌面的使用体验以及功耗相关考虑,对ArkTS卡片的能力做了以下约束:

  • 不支持加载so。
  • 不支持使用native语言开发。
  • 仅支持声明式范式的部分组件、事件、动效、数据管理、状态管理和API能力。
  • 卡片的事件处理和使用方的事件处理是独立的,建议在使用方支持左右滑动的场景下卡片内容不要使用左右滑动功能的组件,以防手势冲突影响交互体验。

除此之外,当前ArkTS卡片还存在如下约束:

  • 暂不支持导入模块。
  • 暂不支持极速预览。
  • 暂不支持断点调试能力。
  • 暂不支持Hot Reload热重载

作为一名合格一线开发程序员,大家心里肯定会有很多疑问!鸿蒙系统这么强大~~

为了能够让大家跟上互联网时代的技术迭代,在这里跟大家分享一下我自己近期学习心得以及参考网上资料整理出的一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG
纯血鸿蒙HarmonyOS基础技能学习路线图

在这里插入图片描述
领取以上完整高清学习路线图,请点击:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG
小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?
-应届生/计算机专业通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

总结

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。关注我,同时可以期待后续文章ing,不定期分享原创知识。想要获取更多完整鸿蒙最新VIP学习资料,请点击:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG

标签:OpenHarmony,ArkTS,鸿蒙,卡片,渲染,应用,使用
From: https://www.cnblogs.com/11usd/p/18022040

相关文章

  • OpenHarmony—UIAbility组件生命周期
    概述当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。UIAbility......
  • [Kyana]开发OpenHarmony应用
    Javaver.HelloWorldconfig.jsonapp{bundleName:包名 vendor:开发厂商名(小贩) version:code(内部版本号),name(用户版本号)}deviceConfig{应用在设备上的配置}module{package:包名name:当前hap包名字mainAbility:hap包的入口abilitydeviceType:当前应用......
  • openharmony4.0 实现网络 app, 鸿蒙
    问题:拿到了开发者手机,但是再测试网络部分的时候出现问题。记录一下。 解决:需要再应用中对网络进行配置,便可以直接复制官方文档中的例子。 1官方文档的路径。https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-http.md......
  • OpenHarmony——4.1release代码走读——dsoftbus/core/discovery/coap
    这是dsoftbus/core/discovery/coap目录的结构.├──common│  ├──include│  │  └──disc_coap_parser.h│  └──src│  └──disc_coap_parser.c├──disc_coap.gni├──interface│  ├──disc_coap.h│  └──disc_......
  • 鸿蒙:揭晓 ArkTS,重塑语法,打造更健壮和可靠的代码
    hi大家好,我是DHL。就职于美团、快手、小米。公众号:ByteCode,分享有用的原创文章,涉及鸿蒙、Android、Java、Kotlin、性能优化、大厂面经我最近建了一个鸿蒙开发者交流群,群里有大佬说在gitee鸿蒙仓库中可以下载DevEcoStudio4.0。于是我下载体验了一下,运行了官方提供示例项目Sh......
  • Flutter for OpenHarmony
    OpenHarmonySIG组织在Gitee开源了兼容OpenHarmony的Flutter。该组织主要用于孵化OpenHarmony相关的开源生态项目。▲仓库地址:https://gitee.com/openharmony-sig/flutter_flutter根据README的描述,此仓库是基于FlutterSDK对OpenHarmony的兼容拓展,可支持使用Flutte......
  • OpenHarmony—开发及引用动态共享包
    对于企业大型应用开发,有部分公共的资源和代码,只能在开发态静态共享,并且打包到每个依赖的HAP里,这样导致包体积较大,且有重复多份公共资源和代码重复打包到应用中。为了解决运行态状态无法共享,以及减少包体积,让多个HAP能够共享同一公共资源代码,DevEcoStudio支持动态共享包HSP(Harmon......
  • 2023 OpenHarmony年度运营报告
                                 ......
  • OpenHarmony—开发及引用静态共享包(API 9)
    HAR(HarmonyArchive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。接下来,将简单介绍库模块的工程结构,如下图所示:相关字段的描述......
  • OpenHarmony 定义扩展组件样式:@Extend 装饰器
    说明:从APIversion9开始,该装饰器支持在ArkTS卡片中使用。装饰器使用说明语法@Extend(UIComponentName)functionfunctionName{...}使用规则●和@Styles不同,@Extend仅支持定义在全局,不支持在组件内部定义。●和@Styles不同,@Extend支持封装指定的组件的私有属性......