harmonyos中必须用preferences实现少量配置的本地持久化,其通过沙箱内xml/gskv文件自动存储键值对;初始化需按三步:声明全小写+下划线的pref_name、在oncreate/onpageshow获取context、异步调用getpreferences()并处理promise;写入支持同步putsync+flushsync、异步put+flush、批量putsync+单flush三种方式,均须显式刷盘;读取必须设默认值防ui异常,删除需removesync+flushsync或clearsync清空全部。

在HarmonyOS应用中保存用户主题、登录状态、字体大小等少量配置信息,必须用Preferences实现本地持久化——它不依赖数据库建表,不涉及文件路径管理,所有键值对自动存进应用沙箱内的XML或GSKV文件,重启后数据仍在。
初始化Preferences实例
第一步:导入模块并声明偏好文件名。文件名一旦确定就不能更改,否则旧数据将无法读取。【PREF_NAME必须全小写字母+下划线,长度不超过32字符】
第二步:获取应用上下文。在Ability生命周期的onCreate或页面onPageShow中调用getContext(this),不能在构造函数里提前获取,否则context为空。
第三步:调用getPreferences()异步获取实例。注意该方法返回Promise,必须用then/catch或await处理,否则this.prefs可能为undefined,后续所有put/get都会报错。
写入数据(支持多种类型)
方法一:同步写入+立即刷盘
直接调用putSync(key, value),支持string/number/boolean/数组;随后必须调用flushSync(),否则数据只存在内存里,进程退出即丢失。
方法二:异步写入+手动提交
用await prefs.put(key, value)写入,再await prefs.flush()触发异步落盘。这一步不能省略——【仅调用put不调flush,数据永远不会写入磁盘】。
方法三:批量写入多个键值对
连续调用多次putSync,最后统一调用一次flushSync()。比逐个flush效率更高,适合初始化默认配置。
读取与删除数据
读取时必须提供默认值。例如get('theme', 'light'),当key不存在时返回'light'而非undefined,避免UI渲染异常。
删除单个键:调用removeSync('token'),立刻从内存中移除;若需确保磁盘同步删除,紧接调用flushSync()。
清空全部数据:调用clearSync(),该操作不可逆,会删除当前Preferences文件内所有键值对。











