想咨询一下,鸿蒙开发中PersistentStorage与Preferences的异同点是什么?

想咨询一下,鸿蒙开发中PersistentStorage与Preferences的异同点是什么?

阅读 922
2 个回答
  • 相同点:两者都可以实现键值对的持久化存储。
  • 不同点:

    • 使用限制条件不同:PersistentStorage有较多限制,如不能持久化大型数据集、经常变化的变量,且只能在UI页面内使用,持久化变量最好小于2kb;而Preferences存储的数据不超过一万条,Key键为string类型,要求非空且长度不超过80个字节,Value值为string类型时长度不超过8192个字节。
    • 存储方式不同:PersistentStorage是同步写入磁盘,Preferences是全量加载进内存。
    • 适用场景不同:PersistentStorage存储AppStorage属性UI状态,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同;Preferences一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等。

相同点
数据持久化:两者都提供了数据持久化的功能,即数据在设备上的存储不会因为应用的关闭或设备的重启而丢失。
不同点
1.存储方式和目的
Preferences:
主要用于配置应用程序的设置和偏好,如用户的个性化设置(字体大小、是否开启夜间模式等)。
提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据。
数据以文本形式保存在设备中,应用使用过程中会将文本中的数据全量加载到内存中,因此访问速度快、效率高。
PersistentStorage:
提供更为持久的数据存储能力,通常与AppStorage配合使用,选择AppStorage中需要持久化的数据写入磁盘。
数据在设备上保持不变,即使应用关闭或设备重启,也能确保数据的连续性。
主要用于存储需要在应用关闭或设备重启后仍然保留的数据。
2.数据大小和性能影响
Preferences:
存储的数据量不宜过多,因为数据会缓存在内存中,过多的数据会占用大量内存资源。
适用于小型配置项数据的存储。
PersistentStorage:
持久化变量最好是小于2kb的数据,不建议进行大量的数据持久化。
因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。
3.使用场景
Preferences:
适用于存储用户的个性化设置、应用配置等轻量级数据。
PersistentStorage:
适用于需要跨应用重启或设备重启后仍然保留的数据,如用户的登录状态、应用状态等。
4.访问方式
Preferences:
提供了较为简单的API接口,方便应用进行数据的读取和写入。
PersistentStorage:
通常需要通过AppStorage来间接访问,实现数据的持久化存储。

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