[HarmonyOS][K老师]鸿蒙中首选项通过什么方式存储?存在什么地方? 原创
头像 K老师 2026-01-01 15:35:57    发布
13720 浏览 355 点赞 0 收藏

先总结一下:

储存形式: 首选项(Preferences)通过键值对(Key-Value)的形式储存数据,用于为应用提供轻量级的数据处理能力,并支持数据的持久化储存

储存位置:默认储存位置为该应用的应用沙箱中

鸿蒙系统首选项(Preferences)存储机制详解

核心特性总结


特性说明
存储形式键值对(Key-Value)结构
数据特性轻量级数据(<10KB)、非关系型、支持基本数据类型
存储位置应用沙箱内部(私有目录)
访问权限仅限应用自身访问(系统级隔离)
持久性应用重启后数据保留
加密支持可选数据加密存储

存储形式详解

键值对(Key-Value)结构:


// 示例数据结构
{
  "user_token": "a1b2c3d4e5",   // 字符串
  "dark_mode_enabled": true,     // 布尔值
  "font_size": 16,               // 数字
  "recent_searches": ["咖啡", "书店", "公园"] // 字符串数组
}
  • 支持数据类型:基础类型:string, number, boolean集合类型:Array<string>, Array<number>, Array<boolean>不支持:复杂对象、嵌套数据、二进制数据
  • 容量限制:单条数据:值不超过 8KB总数据量:建议不超过 10KB(超出时性能下降)

存储位置详解

应用沙箱路径:


/data/app/el2/100/base/<包名>/haps/<模块名>/preferences/
  • 目录结构示例:preferences/ ├── MainPreferences.xml // 默认首选项文件 ├── UserSettings.xml // 自定义首选项文件 └── encrypted_prefs/ // 加密存储目录(如果启用)
  • 核心特性:沙箱隔离:每个应用有独立存储空间自动清理:卸载应用时系统自动删除数据访问控制:应用间无法互相访问用户无Root权限无法直接查看开发者可通过DevEco Studio的文件管理器调试

工作流程

cke_4828.png

使用示例

1. 初始化首选项


import dataPreferences from '@ohos.data.preferences';

// 获取首选项实例
const prefName = 'user_settings';
let preferences: dataPreferences.Preferences = await dataPreferences.getPreferences(context, prefName);

2. 数据存取操作


// 写入数据
await preferences.put('dark_mode', true);
await preferences.put('last_login', '2023-07-12');

// 读取数据
let darkMode: boolean = await preferences.get('dark_mode', false); // 第二个参数为默认值
let lastLogin: string = await preferences.get('last_login', '');

// 删除数据
await preferences.delete('obsolete_key');

// 持久化保存(立即写入磁盘)
await preferences.flush();

3. 加密存储(可选)


// 创建加密首选项
const options: dataPreferences.Options = {
  encrypt: true,        // 启用加密
  securityLevel: dataPreferences.SecurityLevel.S2 // 安全等级
};
const securePref = await dataPreferences.getPreferences(context, 'secure_data', options);

适用场景与限制

适用场景

  • 用户个性化设置(主题、字号等)
  • 应用配置信息
  • 登录状态/令牌存储
  • 小型缓存数据(如搜索历史)

不适用场景

  • 大量结构化数据 → 使用关系型数据库
  • 敏感信息(密码/支付信息) → 使用系统安全库
  • 媒体文件/大文件 → 使用文件存储

性能优化建议

  1. 批量操作:集中写入后调用flush()preferences.put('key1', value1); preferences.put('key2', value2); await preferences.flush(); // 单次磁盘写入
  2. 内存管理:// 使用后释放资源 preferences.release();
  3. 数据分片:大型数据集拆分成多个首选项文件const userPrefs = await getPreferences(context, 'user_data'); const appPrefs = await getPreferences(context, 'app_config');
通过首选项机制,鸿蒙系统实现了轻量级数据的安全隔离存储,平衡了数据访问效率与安全性,是应用基础配置存储的理想解决方案。


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

K老师

大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。

118

帖子

0

提问

1412

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255