鸿蒙应用开发中用到的持久化方案

Preferences-首选项

主要用于保存一些配置信息,为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询;

Preferences中的数据会被缓存在内存中,因此它可以获得更快的存取速度,不太适合存储大量数据的场景

首选项基本操作

1、获得首选项实例

通过getPreferenceSync,以同步方式获得首选项实例

复制代码
import { preferences } from '@kit.ArkData';  // 导入首选项api
const KEY = 'searchStore'
// 获得首选项实例
const preferencesInstance = preferences.getPreferencesSync(getContext(), { name: KEY })
2、向首选项写入数据并持久化到文件中

使用put方法添加数据后,数据会被缓存在内存中,

使用flush方法则用于将这些缓存数据写入到文件中,以确保数据的持久化存储

复制代码
// 利用首选项实例的put方法可以写入数据
// 第一个参数KEY:要写入数据的key
// 第二个参数value:要写入的数据
preferencesInstance.put(KEY, 要保存的值)

// 将数据写入到文件中
preferencesInstance.flush()
3、获取首选项数据

get方法获取首选项数据

复制代码
// 利用首选项实例的get方法可以读取KEY中的数据
// 第一个参数KEY:要获取数据的key
// 第二个参数defValue:如果没有读取到数据,则返回默认数据
preferencesInstance.get(KEY, 默认值)
4、删除指定KEY的数据

deleteSync删除指定key的数据

复制代码
preferencesInstance.deleteSync(KEY);
5、获取首选项文件的目录
复制代码
getContext().preferencesDir

PersistentStorage长链接

支持简单类型,如number、string、boolean、enum等,如果要支持对象类型,可以转化成json字符串。

PersistentStorage将选定的AppStorage属性保留在设备磁盘上,通过 AppStorage 的 Api 来获取并修改即可,AppStorage 的修改会自动同步到PersistentStorage中。

持久化变量最好小于2kb,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。

如果开发者需要存储大量的数据,建议使用数据库api

核心步骤

1、初始化PersistentStorage
复制代码
PersistentStorage.persistProp<string>('name','jerry')
2、通过 AppStorage 获取并修改数据
复制代码
 @StorageLink('name') name:string=''

3、清除数据方法

PersistentStorage.DeleteProp方法用于删除指定键对应的数据

storage.clear方法是用于清空整个存储区域的所有数据。

注意事项

PersistentStorage不支持嵌套对象(对象数组,对象的属性是对象等)。因为目前框架无法检测AppStorage中嵌套对象(包括数组)值的变化,所以无法写回到PersistentStorage中。

总结

总的来说,Preferences适用于存储小型配置项数据,而PersistentStorage适用于存储需要在应用关闭或设备重启后仍然保留的数据

相关推荐
左手厨刀右手茼蒿3 小时前
Flutter 三方库 all_lint_rules_community 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、严谨、基于全量社区 Lint 规则的工业级静态代码质量与安全审计引擎
flutter·harmonyos·鸿蒙·openharmony·all_lint_rules_community
雷帝木木3 小时前
Flutter for OpenHarmony:Flutter 三方库 cbor 构建 IoT 设备的极致压缩防窃协议(基于标准二进制 JSON 表达格式)
网络·物联网·flutter·http·json·harmonyos·鸿蒙
王码码20353 小时前
Flutter 三方库 servicestack 的鸿蒙化适配指南 - 实现企业级 Message-based 架构集成、支持强类型 JSON 序列化与跨端服务调用同步
flutter·harmonyos·鸿蒙·openharmony·message-based
里欧跑得慢3 小时前
Flutter 三方库 jsonata_dart 的鸿蒙化适配指南 - 实现高性能的 JSON 数据查询与转换、支持 JSONata 表达式引擎与端侧复杂数据清洗
flutter·harmonyos·鸿蒙·openharmony·jsonata_dart
国医中兴8 小时前
Flutter 三方库 superclass 的鸿蒙化适配指南 - 支持原生高性能类构造、属性代理与深层元数据解析实战
flutter·harmonyos·鸿蒙·openharmony
加农炮手Jinx1 天前
Flutter 组件 ubuntu_service 适配鸿蒙 HarmonyOS 实战:底层系统服务治理,构建鸿蒙 Linux 子系统与守护进程交互架构
flutter·harmonyos·鸿蒙·openharmony·ubuntu_service
王码码20351 天前
Flutter 三方库 login_client 的鸿蒙化适配指南 - 打造工业级安全登录、OAuth2 自动化鉴权、鸿蒙级身份守门员
flutter·harmonyos·鸿蒙·openharmony·login_client
国医中兴1 天前
Flutter 三方库 dson 的鸿蒙化适配指南 - 极简的序列化魔法、在鸿蒙端实现反射式 JSON 映射实战
flutter·harmonyos·鸿蒙·openharmony
秋秋小事1 天前
鸿蒙DevEvo Studio运行React Native生成的bundle文件遇到的一个问题
react native·react.js·鸿蒙
国医中兴1 天前
Flutter 三方库 cloudflare_r2_uploader 的鸿蒙化适配指南 - 云端存储的疾速通道、在鸿蒙端实现 R2 分段上传实战
flutter·harmonyos·鸿蒙·openharmony·cloudflare_r2_uploader