鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解 📅 2026/7/24 9:15:06 前言首选项数据监听可以让应用实时感知配置变化如主题切换、语言变更等。pura/harmony-utils的PreferencesUtil封装了数据变化监听方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、PreferencesUtil监听核心APIPreferencesUtil提供了以下数据监听方法方法说明参数使用场景onDataChange(callback)订阅数据变化callback实时配置感知offDataChange(callback)取消数据变化订阅callback释放资源1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃实时感知数据变化时立即触发回调1.2 监听应用场景场景监听Key响应行为主题切换theme更新UI主题语言变更language刷新文本登录状态is_logged_in更新导航栏二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 订阅数据变化import{PreferencesUtil}frompura/harmony-utils;privatedataCallback(key:string){this.result数据变化:${key};};aboutToAppear(){PreferencesUtil.onDataChange(this.dataCallback);}aboutToDisappear(){PreferencesUtil.offDataChange(this.dataCallback);}2.3 实时响应配置变化PreferencesUtil.onDataChange((key){if(keytheme){this.loadTheme();}elseif(keylanguage){this.loadLanguage();}});三、完整页面示例import{PreferencesUtil}frompura/harmony-utils;EntryComponentstruct PrefListenerDemo{Stateresult:string等待数据变化...;aboutToAppear(){PreferencesUtil.onDataChange((key){this.result数据变化:${key};});}aboutToDisappear(){PreferencesUtil.offDataChange();}build(){Column({space:12}){Button(修改数据触发监听).width(100%).onClick(async(){awaitPreferencesUtil.putString(test_key,new_value);awaitPreferencesUtil.flush();});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 配置变化管理器import{PreferencesUtil}frompura/harmony-utils;classConfigManager{privatestatichandlers:Recordstring,Function{};staticinit():void{PreferencesUtil.onDataChange((key:string){lethandlerConfigManager.handlers[key];if(handler)handler();});}staticregister(key:string,handler:Function):void{ConfigManager.handlers[key]handler;}}4.2 主题切换响应ConfigManager.register(theme,(){letthemePreferencesUtil.getString(theme,light);AppStorage.setOrCreate(currentTheme,theme);});五、注意事项回调引用注册和取消需使用同一回调引用生命周期页面销毁时务必取消订阅性能回调中避免耗时操作初始化依赖使用前需确保AppUtil.init()已调用flush触发数据变化需flush后才触发回调六、常见问题Q1: 数据变化后回调不触发确保调用了flush()方法只有持久化后才会触发变化通知。Q2: 可以监听特定key的变化吗回调参数包含变化的key可以在回调中判断具体key。Q3: 多次订阅会触发多次吗是的每个订阅的回调都会触发注意避免重复订阅。Q4: 取消订阅后还会收到回调吗不会取消订阅后不再触发回调。总结PreferencesUtil的数据监听方法为配置变化实时感知提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用数据监听可以实现主题切换、语言变更等实时响应功能。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。