在app卡片开发商上遇到了个困难
1、打开 app,回退到桌面(不是杀死),长按app图标添加服务卡片,
2、EntryFormAbility.onAddForm() 触发, 添加 formId 到 preference, ( 调用了 preference.flush() )
3、点击桌面 app 图标重新进入,读取 preference 获取不到刚存储的 formId
4、杀死 app,重新进入 app 读取 preference 可以获取刚存储的 formId
不太理解为什么第三步 获取不到 formId
获取不到是因为涉及到跨进程;
可以使用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