问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

鸿蒙开发者社区:Form Kit卡片开发服务详解

创作时间:
作者:
@小白创作中心

鸿蒙开发者社区:Form Kit卡片开发服务详解

引用
51CTO
1.
https://ost.51cto.com/posts/31024

鸿蒙系统的Form Kit(卡片开发服务)提供了一种新的界面展示形式,可以将应用的重要信息或操作前置到服务卡片中,以达到服务直达、减少跳转层级的体验效果。本文将详细介绍服务卡片的架构、实现原理以及如何创建服务卡片。

服务卡片架构

卡片的基本概念:

  • 卡片使用方:如桌面,显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。
  • 应用图标:应用入口图标,点击后可拉起应用进程,图标内容不支持交互。
  • 卡片:具备不同规格大小的界面展示,卡片的内容可以进行交互,如实现按钮进行界面的刷新、应用的跳转等。
  • 卡片提供方:包含卡片的应用,提供卡片的显示内容、控件布局以及控件点击处理逻辑。
  • FormExtensionAbility:卡片业务逻辑模块,提供卡片创建、销毁、刷新等生命周期回调。
  • 卡片页面:卡片UI模块,包含页面控件、布局、事件等显示和交互信息。

实现原理

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

与动态卡片相比,静态卡片整体的运行框架和渲染流程是一致的,主要区别在于,卡片渲染服务将卡片内容渲染完毕后,卡片使用方会使用最后一帧渲染的数据作为静态图片显示,其次卡片渲染服务中的卡片实例会释放该卡片的所有运行资源以节省内存。因此频繁的刷新会导致静态卡片运行时资源不断的创建和销毁,增加卡片功耗。

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

创建服务卡片

要创建一个服务卡片,需要在工程中添加以下卡片相关文件:

  • 卡片生命周期管理文件(EntryFormAbility.ets)
  • 卡片页面文件(WidgetCard.ets)
  • 卡片配置文件(form_config.json)

通过以上步骤,就可以完成一个服务卡片的创建。这将为用户提供更加便捷和直观的应用体验。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号