HarmonyOS 卡片formId存储?

在app卡片开发商上遇到了个困难

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

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

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

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

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

阅读 590
1 个回答

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

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

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

removePreferencesFromCache参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-preferences-V5\#preferencesremovepreferencesfromcache

进程模型:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/process-model-fa-V5

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进