# 13.2:服务卡片实战(一)

本节笔者简单介绍一下 OpenHarmony 的服务卡片,服务卡片是原子化服务和 FA 的一种界面展示形式,它将原子化服务或 FA 的重要信息或操作前置到卡片,以达到服务直达,减少体验层级的目的。服务卡片常用于嵌入到其他应用(当前只支持系统应用)中作为其界面的一部分显示,并支持拉起页面,发送消息等基础的交互功能。示例如下所示:

13_1_4_1

# 13.2.1:服务卡片约束与限制

  • 对于同一个 Page Ability ,在 config.json 中最多支持配置 16 张卡片。

# 13.2.2:服务卡片基本概念

服务卡片由卡片提供方,卡片使用方和卡片管理方三者共同组成,说明如下:

  • 卡片提供方

    提供卡片显示内容的 HarmonyOS / OpenHarmony 应用或原子化服务,控制卡片的显示内容、控件布局以及控件点击事件,该提供方一般都是开发者提供。

  • 卡片使用方

    显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。

  • 卡片管理方

    用于管理系统中所添加卡片的常驻代理服务,包括卡片对象的管理与使用,以及卡片周期性刷新等。

📢:卡片使用方和提供方不要求常驻运行,在需要添加/删除/请求更新卡片时,卡片管理方会拉起卡片提供方获取卡片信息。

# 13.2.3:服务卡片运作机制

华为在开发者文档里给出了 HarmonyOS 的服务卡片运行机制,众所周知 HarmonyOS 是基于 OpenHarmony 的商业发行版,笔者推测 OpenHarmony 的服务卡片运行机制和 HarmonyOS 运行机制类似:

13_2_4_1

卡片管理方包含以下模块:

  • 周期性刷新卡片

    在卡片添加后,根据卡片的刷新策略启动定时任务周期性触发卡片的刷新。

  • 卡片缓存管理

    在卡片添加到卡片管理服务后,对卡片的视图信息进行缓存,以便下次获取卡片时可以直接返回缓存数据,降低时延。

  • 卡片生命周期管理

    对于卡片切换到后台或者被遮挡时,暂停卡片的刷新;以及卡片的升级/卸载场景下对卡片数据的更新和清理。

  • 卡片使用方对象管理

    对卡片使用方的 RPC 对象进行管理,用于使用方请求进行校验以及对卡片更新后的回调处理。

  • 通信适配层

    负责与卡片使用方和提供方进行 RPC 通信。

卡片提供方包含以下模块:

  • 卡片服务

    由卡片提供方开发者实现,开发者实现 onCreate()onUpdate()onDestroy() 处理创建卡片、更新卡片以及销毁卡片等请求,提供相应的卡片服务。

  • 卡片提供方实例管理模块

    由卡片提供方开发者实现,负责对卡片管理服务分配的卡片实例进行持久化管理。

  • 通信适配层

    由 OpenHarmony SDK 提供,负责与卡片管理服务通信,用于将卡片的更新数据主动推送到卡片管理服务。

# 13.2.4:服务卡片开发简介

开发者作为卡片提供方,仅需实现卡片界面布局,界面显示内容更新以及卡片点击事件的处理,卡片使用方和卡片代理服务均由系统自动处理。 OpenHarmony 中的服务卡片为卡片开发者提供以下接口能力:

类型 接口名 描述
FormAbility onCreate(want) 卡片提供方接收创建卡片通知接口。
onUpdate(formId) 卡片提供方接收更新卡片通知接口。
onVisibilityChange(newStatus) 卡片提供方接收卡片可见性变更的通知接口。
onEvent(formId, message) 卡片提供方处理卡片事件接口。
onDestroy(formId) 卡片提供方接收卡片销毁通知接口。
onAcquireFormState(want) 卡片提供方接收查询卡片状态通知接口。

各接口回调时机如下图所示:

13_2_4_1

以上就是服务卡片开发过程中各 API 的调用时机,下一节笔者向读者介绍一下服务卡片开发的具体操作,敬请期待……

(adsbygoogle = window.adsbygoogle || []).push({});
请作者喝杯咖啡

津公网安备 12011402001367号

津ICP备2020008934号-2