# 14.2:服务卡片实战(一)
本节笔者简单介绍一下 OpenHarmony 的服务卡片,服务卡片是原子化服务和 FA 的一种界面展示形式,它将原子化服务或 FA 的重要信息或操作前置到卡片,以达到服务直达,减少体验层级的目的。服务卡片常用于嵌入到其他应用(当前只支持系统应用)中作为其界面的一部分显示,并支持拉起页面,发送消息等基础的交互功能。示例如下所示:
# 14.2.1:服务卡片约束与限制
- 对于同一个 Page Ability ,在
config.json
中最多支持配置 16 张卡片。
# 14.2.2:服务卡片基本概念
服务卡片由卡片提供方,卡片使用方和卡片管理方三者共同组成,说明如下:
卡片提供方
提供卡片显示内容的 HarmonyOS / OpenHarmony 应用或原子化服务,控制卡片的显示内容、控件布局以及控件点击事件,该提供方一般都是开发者提供。
卡片使用方
显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。
卡片管理方
用于管理系统中所添加卡片的常驻代理服务,包括卡片对象的管理与使用,以及卡片周期性刷新等。
📢:卡片使用方和提供方不要求常驻运行,在需要添加/删除/请求更新卡片时,卡片管理方会拉起卡片提供方获取卡片信息。
# 14.2.3:服务卡片运作机制
华为在开发者文档里给出了 HarmonyOS 的服务卡片运行机制,众所周知 HarmonyOS 是基于 OpenHarmony 的商业发行版,笔者推测 OpenHarmony 的服务卡片运行机制和 HarmonyOS 运行机制类似:
卡片管理方包含以下模块:
周期性刷新卡片
在卡片添加后,根据卡片的刷新策略启动定时任务周期性触发卡片的刷新。
卡片缓存管理
在卡片添加到卡片管理服务后,对卡片的视图信息进行缓存,以便下次获取卡片时可以直接返回缓存数据,降低时延。
卡片生命周期管理
对于卡片切换到后台或者被遮挡时,暂停卡片的刷新;以及卡片的升级/卸载场景下对卡片数据的更新和清理。
卡片使用方对象管理
对卡片使用方的 RPC 对象进行管理,用于使用方请求进行校验以及对卡片更新后的回调处理。
通信适配层
负责与卡片使用方和提供方进行 RPC 通信。
卡片提供方包含以下模块:
卡片服务
由卡片提供方开发者实现,开发者实现
onCreate()
、onUpdate()
和onDestroy()
处理创建卡片、更新卡片以及销毁卡片等请求,提供相应的卡片服务。卡片提供方实例管理模块
由卡片提供方开发者实现,负责对卡片管理服务分配的卡片实例进行持久化管理。
通信适配层
由 OpenHarmony SDK 提供,负责与卡片管理服务通信,用于将卡片的更新数据主动推送到卡片管理服务。
# 14.2.4:服务卡片开发简介
开发者作为卡片提供方,仅需实现卡片界面布局,界面显示内容更新以及卡片点击事件的处理,卡片使用方和卡片代理服务均由系统自动处理。 OpenHarmony 中的服务卡片为卡片开发者提供以下接口能力:
类型 | 接口名 | 描述 |
---|---|---|
FormAbility | onCreate(want) | 卡片提供方接收创建卡片通知接口。 |
onUpdate(formId) | 卡片提供方接收更新卡片通知接口。 | |
onVisibilityChange(newStatus) | 卡片提供方接收卡片可见性变更的通知接口。 | |
onEvent(formId, message) | 卡片提供方处理卡片事件接口。 | |
onDestroy(formId) | 卡片提供方接收卡片销毁通知接口。 | |
onAcquireFormState(want) | 卡片提供方接收查询卡片状态通知接口。 |
各接口回调时机如下图所示:
以上就是服务卡片开发过程中各 API 的调用时机,下一节笔者向读者介绍一下服务卡片开发的具体操作,敬请期待……