HarmonyOS鸿蒙Next中卡片formId存储

HarmonyOS鸿蒙Next中卡片formId存储 在app卡片开发商上遇到了个困难,想请教下有人有处理过吗?

1 打开 app,回退到桌面(不是杀死),长按app图标添加服务卡片

2 EntryFormAbility.onAddForm() 触发, 添加 formId 到 preference, ( 调用了 preference.flush() )

3 点击桌面 app 图标重新进入,读取 preference 获取不到刚存储的 formId

4 杀死 app,重新进入 app 读取 preference 可以获取刚存储的 formId

不太理解为什么第三步 获取不到 formId


更多关于HarmonyOS鸿蒙Next中卡片formId存储的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

获取不到是因为涉及到跨进程;

可以使用preferences的removePreferencesFromCache接口来清理缓存,然后重新getPreferences,getPreferences会读取文件最新数据并生成新缓存,也就可以读到另一个进程写进去的值。

注意:请避免多进程并发读写的操作,可能会有非预期的结果,目前只保证单进程安全。

removePreferencesFromCache参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-data-preferences-V13#preferencesremovepreferencesfromcache

进程模型:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/process-model-fa-V13

更多关于HarmonyOS鸿蒙Next中卡片formId存储的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,卡片(Form)的formId是用于唯一标识卡片的标识符。formId的存储和管理是系统自动处理的,开发者无需手动存储或管理formId。当开发者创建或删除卡片时,系统会为每个卡片分配或回收相应的formId。

在开发过程中,开发者可以通过FormManager类来操作卡片,包括获取、添加、删除等操作。系统会根据卡片的生命周期自动管理formId的分配和回收,确保每个卡片都有唯一的标识符。开发者可以通过FormManager提供的API来获取卡片的formId,但不需要关心其具体的存储方式和位置。

例如,开发者可以通过FormManager.getFormInfo()方法获取卡片的详细信息,其中包括formId。系统会确保在卡片创建时生成唯一的formId,并在卡片删除时回收该formId,避免重复使用。

在HarmonyOS鸿蒙Next中,卡片(Card)的formId是卡片的唯一标识符,用于区分不同的卡片实例。formId通常由系统自动生成,开发者可以通过AbilityContextcreateForm方法创建卡片时获取。formId可以存储在应用的本地数据库中,便于后续对卡片进行更新、删除等操作。建议使用PreferencesData Ability等持久化存储机制来保存formId,确保数据在应用重启后仍然可用。

回到顶部