HarmonyOS鸿蒙NEXT中类似联系人的数据类型应该如何持久化?

HarmonyOS鸿蒙NEXT中类似联系人的数据类型应该如何持久化?

3 回复

您好,您的问题可参考这个帖子:https://developer.huawei.com/consumer/cn/forum/topic/0201185844430182021

具体解决方案如下:

PersistentStorage、用户首选项(Preferences)、键值型数据库(KV-Store)、关系型数据库(RelationalStore)适用场景如下:

介绍 PersistentStorage 用户首选项(Preferences) 键值型数据库(KV-Store) 关系型数据库(RelationalStore)
PersistentStorage持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。 Preferences是用于存储应用程序设置的轻量级数据库。它提供了一种简单的机制来存储和检索应用程序的配置信息,数据通常以键值对的形式存储。Preferences的数据是同步存储的,适用于存储少量的结构化数据。 一种非关系型数据库,其数据以“键值”对的形式进行组织、索引和存储,其中“键”作为唯一标识符。 关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景。
适用场景 ①需要持久化存储UI状态的应用程序。
②需要在UI实例初始化后进行持久化操作。
③希望在应用程序关闭后重新启动时恢复上次的状态。
①需要存储应用程序的配置信息。
②需要支持数据的快速读取和写入。
③希望在应用程序的不同部分共享数据。
④应用保存用户的个性化设置(字体大小,是否开启夜间模式)。
存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等。 数据之间有较强的对应关系场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等;公司的雇员信息,需要包括姓名、工号、职位等。
是否支持加密 —— 不支持。 支持,参考数据库加密文档 支持,参考数据库加密文档
限制条件 ①不支持嵌套对象(对象数组,对象的属性是对象等)。
②PersistentStorage适用于存储<2KB的轻量数据,其同步写入磁盘机制会影响UI线程性能。需存储大量数据时,应改用数据库API以避免界面渲染卡顿。
更多详细参考官方文档
①首选项无法保证多进程并发安全,易导致数据损坏,不支持多进程使用。
②Key键为string类型,非空且长度≤1024字节。
③字符串类型的Value使用UTF-8编码,可为空,非空时长度不超过16MB。
③内存随数据量增加而增长,建议存储≤50MB轻量数据,大数据的同步持久化操作易引发主线程卡顿,可能出现appfreeze问题。
更多详细参考官方文档
①设备协同数据库,针对每条记录,Key的长度≤896 Byte,Value的长度<4 MB。
②单版本数据库,针对每条记录,Key的长度≤1 KB,Value的长度<4 MB。
③每个应用程序最多支持同时打开16个键值型分布式数据库。
④键值型数据库事件回调方法中不允许进行阻塞操作,例如修改UI组件。
更多详细参考官方文档
①为保证数据的准确性,数据库同一时间只能支持一个写操作。
②为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。
③当应用被卸载完成后,设备上的相关数据库文件及临时文件会被自动清除。
更多详细参考官方文档

更多关于HarmonyOS鸿蒙NEXT中类似联系人的数据类型应该如何持久化?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,类似联系人的结构化数据推荐使用分布式数据对象(DistributedDataObject)或关系型数据库(RDB)持久化。对于轻量级数据可使用Preferences,键值对形式存储。分布式数据对象支持跨设备同步,自动处理对象关系;RDB提供完整SQLite功能,适合复杂数据结构。两者均通过ohos.data.ddm接口实现,数据加密存储在本地沙箱。

在HarmonyOS NEXT中,类似联系人这种结构化数据的持久化推荐使用关系型数据库(RDB)或对象关系映射(ORM)方式存储。具体实现方案如下:

  1. 使用RDB存储:
  • 通过@ohos.data.relationalStore创建联系人表
  • 定义字段如id(主键)、name、phone等
  • 使用insert/update/delete接口进行CRUD操作
  1. 使用ORM框架:
  • 通过@ohos.data.orm定义联系人Entity类
  • 使用@Column装饰器标注各字段
  • 通过OrmContext进行数据操作

两种方式都支持数据加密、事务处理等特性。RDB适合复杂查询场景,ORM更适合面向对象开发。根据业务复杂度选择即可,数据会持久化到设备本地。

回到顶部