HarmonyOS 鸿蒙Next如何在app内主动刷新卡片?

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何在app内主动刷新卡片?

这个文档 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-ui-widget-event-uiability-0000001820880181 这里介绍的是从卡片拉起应用页面,然后应用去刷新卡片的。我现在需要在平时打开应用的时候,用户在应用内刷新了数据,但是我想将刷新的数据同步到卡片刷新,如何通知卡片进行刷新操作?在主应用程序里面调用postCardAction好像无效果,卡片onFormEvent接收不到

在app内通过formProvider.updateForm更新卡片信息,这里面的updateForm那个卡片formId是怎么在app内获取到的

2 回复

app更新卡片数据,使用updateForm进行更新。更新时,需要传formId,添加卡片时,需要你自己将formId存到rdb数据库中,更新的时候取出来,就可以更新了。所以关键就是存form的时候,需要你知道自己存的数据。

卡片事件:

onAddForm:用户点击添加卡片时,展示的所有卡片都会调用这个函数,此时会生成随机formId,下一次再打开,相同卡片,formId也是不一样的。可以在这个函数里面,增加保存操作,将所有卡片信息,存到rdb数据库中,记得做去重判断。

onRemoveForm:用户选中了卡片,卡片选择窗口关闭,未选中的卡片会调用onRemoveForm函数,在这个函数中,根据formId,删除数据库中的卡片。

上面两个函数逻辑实现好后,数据库中最终留下的只有用户添加的卡片信息。

然后用户在应用内进行数据更新,更新逻辑,你肯定知道,读取数据库,查询卡片信息,然后拿到formId,更新指定卡片数据

在HarmonyOS鸿蒙Next系统中,要在app内主动刷新卡片,可以采取以下方法:

首先,可以通过跨进程通信机制来实现。由于卡片渲染在系统进程,而app运行在独立的应用进程,两者之间存在内存隔离,因此需要使用HarmonyOS提供的跨进程通信模块(如commonEventManager)来传递卡片ID和数据更新信息。这样,当app内数据更新时,就可以通过此机制通知系统进程刷新卡片。

其次,可以利用卡片框架提供的定时刷新和定点刷新功能。通过配置form_config.json文件中的updateDuration和scheduledUpdateTime字段,可以设定卡片在特定时间间隔或每天特定时间点自动刷新。不过,这并非app内主动触发,而是系统根据配置自动执行。

最后,如果希望立即刷新卡片,可以考虑调用系统提供的API,如setFormNextRefreshTime,来设置卡片的下一次刷新时间。但这种方法通常用于在特定事件后尽快刷新卡片,而非持续的数据更新场景。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部