介绍
本示例实现使用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事件需要提供方应用具备后台运行权限。
更多详情参考:示例代码