HarmonyOS 鸿蒙Next PersistentStorage持久化存储和preferences有什么区别?

HarmonyOS 鸿蒙Next PersistentStorage持久化存储和preferences有什么区别?

优先选择谁? 文档:

① PersistentStorage是应用程序中的可选单例对象。此对象的作用是持久化存储选定的AppStorage属性,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。

② preferences用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。


更多关于HarmonyOS 鸿蒙Next PersistentStorage持久化存储和preferences有什么区别?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

感谢楼主分享

更多关于HarmonyOS 鸿蒙Next PersistentStorage持久化存储和preferences有什么区别?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


AppStorage 是运行在内存中的,应用一关闭数据不会保存。PersistenStorage 则可以持久化AppStorage中的属性,并且AppStorage中的更改都会自动同步到PersistenStorage 中。

补充一点:AppStorage与PersistenStorage 的键名必须相同,才可以相互同步

评论都看了,但是还是不太好选择,能帮我分析一下吗?

我要做的东西是已有的,之前是安卓的外壳嵌套好几个H5项目, 不仅需要存储登陆账号密码,还需要存储里面的各种设置包括对象、数组(但这些都可转成string传)【这里存储是存的h5里面的东西,通过跟原生交互存到原生的一个文件里面,会大量的跟原生交互来进行存、取】

现在安卓要改成用鸿蒙,PersistentStorage和Perferences不太能确定用哪一个?(存和取应该都需要同步,就是a得通过调用方法和原生交互拿到值赋值给a这种,let a=main.storage('userId');     )

首先我这方面的经验不是很足哈,我的建议是使用Perferences, PersistentStorage的使用方式是受限的,比如存储大小

好的,谢谢你

数据量小于2KB,建议使用persistentStorage,因为它与AppStorage相互同步,所以操作数据时磁盘和内存都是同步的,大量的数据本地化读写会同步在UI线程中执行影响UI渲染性能。 数据量稍大建议使用preference(可以使用轻量级数据存储),每次存储都需要调用flush()。 数据量很大就必须使用接口API和数据库了。

首选项为用户提供Key-Value型数据处理能力,支持轻量级的数据持久化,并对其修改和查询。Perferences先将首选项文件加载到内存中,之后的操作都在内存中完成,直到调用flush方法才把内存中的数据写回到文件中去。

put方法支持的类型有 number | string | boolean | Array<number> | Array<string> | Array<boolean>

preferences 模块是将数据加载到内存中去,所以建议存储数据不超过一万条。否则就应该考虑用数据库来进行存储

生成的持久化文件存储在 /data/storage/el2/100/base/xx.xx.xx/hsps/xx/preferences/xxx 中,以xml的格式存储,且类型信息也存储了

PersistentStorage.PersistProp 需要在 AppStorage访问属性(SetOrCreate,[@StorageLInk](/user/StorageLInk))之前调用。如果反过来,就会出现上一次持久化的值被属性的默认值给覆盖掉了 。API9下 PersistentStorage只能在UI页面中使用

PersistentStorage 允许的类型有:number,string等简单类型,还有可以被 JSON.stringify和JSON.parse重构的对象。不支持嵌套对象,对象数组,undefined和null

观察aboutToAppear 方法的打印,发现应用关闭再打开后bool 和 person 的类型都变为了string。这就需要自己做判断转换类型了。尤其注意boolean类型,一不小心false变成'false',隐式转换成true(4.0已修改)

cke_916.png

  • csdn:  由于PersistentStorage 是立即同步,所以对于频繁修改的数据不建议使用,且持久化的变量最好小于2kb,否则会拖慢UI响应速度

HarmonyOS 鸿蒙Next中,PersistentStorage持久化存储和preferences的主要区别如下:

  1. 数据存储与访问

    • PersistentStorage提供持久性数据存储,确保数据在设备重启后依然保持不变,数据存储在磁盘上,访问时需考虑UI渲染性能。
    • preferences以键值对形式存储,支持多种数据类型,适合轻量级数据持久化,数据全量加载进内存,访问速度快。
  2. 使用场景与限制

    • PersistentStorage适用于需要持久化存储的数据,如UI状态,但持久化变量最好小于2kb,且只能在UI页面内使用,不支持嵌套对象持久化。
    • preferences通常用于保存用户个性化设置等小型配置项,存储的数据不超过一万条,对Key和Value的长度有明确要求。

综上所述,PersistentStorage和preferences在数据存储方式、访问速度、使用场景及限制等方面存在显著差异。开发者应根据具体需求选择合适的数据存储方式。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部