场景介绍
开发者仅需作为卡片提供方进行服务卡片内容的开发,卡片使用方和卡片代理服务由系统自动处理。
卡片提供方控制卡片实际显示的内容、控件布局以及控件点击事件。开发者可以通过集成以下接口来提供卡片服务。
Java服务卡片的底层逻辑处理均通过Java接口实现,在卡片的UI实现层面,可通过Java UI或JS UI来实现。
接口说明
HarmonyOS中的服务卡片为卡片提供方开发者提供以下接口能力。
类名 |
接口名 |
描述 |
---|---|---|
Ability |
ProviderFormInfo onCreateForm(Intent intent) |
卡片提供方接收创建卡片通知接口。 |
void onUpdateForm(long formId) |
卡片提供方接收更新卡片通知接口。 |
|
void onDeleteForm(long formId) |
卡片提供方接收删除卡片通知接口。 |
|
void onTriggerFormEvent(long formId, String message) |
卡片提供方处理卡片事件接口(JS UI的卡片使用)。 |
|
boolean updateForm(long formId, ComponentProvider component) |
卡片提供方主动更新卡片(Java UI的卡片使用)。 |
|
boolean updateForm(long formId, FormBindingData formBindingData) |
卡片提供方主动更新卡片(JS UI的卡片使用),仅更新formBindingData中携带的信息,卡片中其余信息保持不变。 |
|
void onCastTempForm(long formId) |
卡片提供方接收临时卡片转常态卡片通知(预留接口,当前版本无触发场景,不会回调)。 |
|
void onEventNotify(Map<Long, Integer> formEvents) |
卡片提供方接收到事件通知,其中Ability.FORM_VISIBLE表示卡片可见通知, Ability.FORM_INVISIBLE表示卡片不可见通知。 |
|
FormState onAcquireFormState(Intent intent) |
卡片提供方接收查询卡片状态通知接口。默认返回卡片初始状态。 |
|
ProviderFormInfo |
ProviderFormInfo(int resId, Context context) |
Java UI的卡片返回对象构造函数。 |
ProviderFormInfo() |
JS UI的卡片返回对象构造函数。 |
|
void mergeActions(ComponentProvider componentProviderActions) |
在提供方侧调用该接口,将开发者在ComponentProvider中设置的actions配置数据合并到当前对象中。 |
|
void setJsBindingData(FormBindingData data) |
设置JS UI的卡片的内容信息(JS UI的卡片使用)。 |
其中,onEventNotify仅系统应用才会回调,其他接口回调时机如下图:
卡片管理服务不负责保持卡片的活跃状态(设置了定时更新的除外),当使用方作出相应的请求时,管理服务会拉起提供方并回调相应接口。
使用Java或JS实现卡片UI的选型指导
使用Java或JS实现卡片UI在场景能力上的差异如下表所示:
场景 |
Java UI的卡片 |
JS UI的卡片 |
支持的版本 |
---|---|---|---|
实时刷新(类似时钟) |
Java使用ComponentProvider做实时刷新代价比较大 |
JS可以做到端侧刷新,但是需要定制化组件 |
HarmonyOS 2.0及以上 |
开发方式 |
Java UI在卡片提供方需要同时对数据和组件进行处理,生成ComponentProvider远端渲染 |
JS卡片在使用方加载渲染,提供方只要处理数据、组件和逻辑分离 |
HarmonyOS 2.0及以上 |
组件支持 |
Text、Image、DirectionalLayout、PositionLayout、DependentLayout |
div、list、list-item、swiper、 stack、image、text、span、progress、button(定制:chart 、clock、calendar) |
HarmonyOS 2.0及以上 |
卡片内动效 |
不支持 |
暂不开放 |
HarmonyOS 2.0及以上 |
阴影模糊 |
不支持 |
支持 |
HarmonyOS 2.0及以上 |
动态适应布局 |
不支持 |
支持 |
HarmonyOS 2.0及以上 |
自定义卡片跳转页面 |
不支持 |
支持 |
HarmonyOS 2.0及以上 |
综上所述,Java卡片使用JS UI比使用Java UI所支持的控件和能力都更丰富,因此:
- Java UI的卡片:适合作为一个直达入口,没有复杂的页面和事件。
- JS UI的卡片:适合有复杂界面的卡片。