鸿蒙(HarmonyOS)应用开发——保存应用数据

保存应用数据

harmonyOS系统提供了四种数据存储方式
数据存储方式 首选项 关系型数据库 分布式数据服务 分布式数据对象

首选项

适用于对key-value结构的数据进行存取和持久化操作。

特点

  • key-value 数据接口
    Key是不重复的关键字,Value是数据值
  • 非关系型数据库
    不保证遵循ACID(Atomicity, Consistency, Isolation 以及Durability) 特性

注意点

  • 因首选项实例会加载到内存中,建议存储到数据不超过一万条
  • 数据中的key为string类型,要求非空且自负长度不超过80个字节
  • 当数据中的value为string类型时,运行为空,字符长度不超过8192

使用

导入preference模块 获取preference实例 保存数据 是否包含指定的key 获取数据

导入preference模块

javascript 复制代码
import dataPreferences from '@ohos.data.preferences';
const PREFERENCES_NAME = 'myPreferences'; // 数据库表名字
const KEY_APP_FONT_SIZE = 'appFontSize';  // 首选项Key

获取preference实例

javascript 复制代码
globalThis.getFontPreferences = (() => {
      // 获取首选项实例
      let preferences: Promise<dataPreferences.Preferences> = dataPreferences.getPreferences(context, PREFERENCES_NAME);
      return preferences;
    });

保存数据

javascript 复制代码
 	await preferences.put(KEY_APP_FONT_SIZE, fontSize);
	preferences.flush();

获取数据

javascript 复制代码
	let fontSize: number = 0;
    const preferences = await globalThis.getFontPreferences();
    fontSize = await preferences.get(KEY_APP_FONT_SIZE, fontSize);

是否包含指定的key

javascript 复制代码
 preferences.has(KEY_APP_FONT_SIZE).then(async (isExist) => {
        Logger.info(TAG, 'preferences has changeFontSize is ' + isExist);
      }).catch((err) => {
        Logger.error(TAG, 'Has the value failed with err: ' + err);
 });

数据持久化

通过flush方法把应用数据保存到文件中,使得应用数据保存期限变长

javascript 复制代码
preferences.flush();
相关推荐
威哥爱编程1 小时前
HarmonyOS 7 Agent 开发实战 10:降级兜底与重试
agent·harmonyos
威哥爱编程1 小时前
HarmonyOS 7 Agent 开发实战 11:并发多会话隔离
agent·harmonyos
威哥爱编程1 小时前
HarmonyOS 7 Agent 开发实战 12:人机协同与人工接管
agent·harmonyos
鸿蒙开发2 小时前
鸿蒙动态表单实战:用 @hmkit/validator 处理条件必填与错误联动
harmonyos
行者-全栈开发2 小时前
【共创稿事节】HarmonyOS 三方库工程化集成:从 ohpm 引入到三方库鸿蒙化的完整闭环
harmonyos·鸿蒙·har·三方库·ohpm·框架适配
网络豆3 小时前
开源鸿蒙平台 CMP 三方库「tanstack-table-kmp」适配全流程
华为·开源·harmonyos
贾伟康4 小时前
【共创稿事节】食材百科页的懒加载改造:LazyForEach、IDataSource 与缓存窗口的三次迭代
性能优化·harmonyos·arkts·lazyforeach·列表加载
SZYSK4 小时前
一套人员主数据,三套事务:通行、消费、人证比对如何分事件类型
物联网·算法·harmonyos
贾伟康6 小时前
【共创稿事节】一个 UserDataManager 管八类数据:Preferences 持久化的克制用法
java·服务器·前端·harmonyos·arkts·鸿蒙
万物智能信息科技6 小时前
六轴传感器Motion驱动框架开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙