介绍
本示例实现使用router、call和message三种事件,以及定点刷新的方式实现卡片信息的刷新。
效果预览
工程目录
├──entry/src/main/ets // 代码区
│ ├──common
│ │ ├──CommonConstants.ets // 卡片数据
│ │ └──CommonData.ets // 卡片数据工具类
│ ├──entryability
│ │ └──EntryAbility.ets // 程序入口类
│ ├──entrybackupability
│ │ └──EntryBackupAbility.ets
│ ├──entryformability
│ │ └──EntryFormAbility.ets // 卡片生命周期类
│ ├──pages
│ │ └──Index.ets // 首页
│ └──widget
│ ├──pages
│ │ └──WidgetCard.ets // 卡片页面
│ ├──view
│ │ └──CardListComponent.ets
│ └──viewmodel
│ └──CardListParameter.ets
└──entry/src/main/resources // 应用静态资源目录
使用说明
- 安装应用后,长按应用图标,添加服务卡片。
- 点击“router事件”按钮进入应用页面,返回桌面时可见卡片信息刷新。
- 点击“call事件”,可见卡片信息刷新。
- 点击“message事件”可见卡片信息刷新。
- 配置“src/main/resources/base/profile/form_config.json”文件中的“scheduledUpdateTime”字段为某个时间,卡片信息即可在相应时间刷新。
实现说明
- router事件通过应用EntryAbility的生命周期回调触发更新方法,使用formProvider的updateForm方法,将内容更新到指定卡片。
- call事件在EntryFormAbility的onAddForm中更新卡片信息,触发卡片UI的onFormTimeChange方法,通过其中postCardAction方法携带的updateCardInfo信息,触发EntryAbility中的callee监听,在监听方法中进行刷新处理。
- message事件在EntryFormAbility的onFormEvent回调中进行刷新处理。
注:
- 卡片刷新也可以通过定时刷新实现,在“form_config.json”文件中配置“updateDuration”字段即可。由于定时刷新和定点刷新同时配置时,定点刷新也会被忽略,本示例项目仅使用定点刷新。若想要实现定时刷新,可参考指南指导。
- 本项目的卡片中信息为代码中配置的数据,在真实场景中,可以自行封装获取信息的方法。
相关权限
ohos.permission.KEEP_BACKGROUND_RUNNING:允许Service Ability在后台持续运行。call事件需要提供方应用具备后台运行权限。