当前位置: 首页 > news >正文

鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解

前言

首选项数据监听可以让应用实时感知配置变化,如主题切换、语言变更等。@pura/harmony-utilsPreferencesUtil封装了数据变化监听方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、PreferencesUtil监听核心API

PreferencesUtil提供了以下数据监听方法:

方法说明参数使用场景
onDataChange(callback)订阅数据变化callback实时配置感知
offDataChange(callback)取消数据变化订阅callback释放资源

1.1 核心特性

  • 简洁易用:封装复杂API为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 实时感知:数据变化时立即触发回调

1.2 监听应用场景

场景监听Key响应行为
主题切换theme更新UI主题
语言变更language刷新文本
登录状态is_logged_in更新导航栏

二、完整使用步骤

2.1 安装依赖

ohpminstall@pura/harmony-utils

2.2 订阅数据变化

import{PreferencesUtil}from'@pura/harmony-utils';privatedataCallback=(key:string)=>{this.result=`数据变化:${key}`;};aboutToAppear(){PreferencesUtil.onDataChange(this.dataCallback);}aboutToDisappear(){PreferencesUtil.offDataChange(this.dataCallback);}

2.3 实时响应配置变化

PreferencesUtil.onDataChange((key)=>{if(key==='theme'){this.loadTheme();}elseif(key==='language'){this.loadLanguage();}});

三、完整页面示例

import{PreferencesUtil}from'@pura/harmony-utils';@Entry@Componentstruct 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}from'@pura/harmony-utils';classConfigManager{privatestatichandlers:Record<string,Function>={};staticinit():void{PreferencesUtil.onDataChange((key:string)=>{lethandler=ConfigManager.handlers[key];if(handler)handler();});}staticregister(key:string,handler:Function):void{ConfigManager.handlers[key]=handler;}}

4.2 主题切换响应

ConfigManager.register('theme',()=>{lettheme=PreferencesUtil.getString('theme','light');AppStorage.setOrCreate('currentTheme',theme);});

五、注意事项

  1. 回调引用:注册和取消需使用同一回调引用
  2. 生命周期:页面销毁时务必取消订阅
  3. 性能:回调中避免耗时操作
  4. 初始化依赖:使用前需确保AppUtil.init()已调用
  5. flush触发:数据变化需flush后才触发回调

六、常见问题

Q1: 数据变化后回调不触发?

确保调用了flush()方法,只有持久化后才会触发变化通知。

Q2: 可以监听特定key的变化吗?

回调参数包含变化的key,可以在回调中判断具体key。

Q3: 多次订阅会触发多次吗?

是的,每个订阅的回调都会触发,注意避免重复订阅。

Q4: 取消订阅后还会收到回调吗?

不会,取消订阅后不再触发回调。


总结

PreferencesUtil的数据监听方法为配置变化实时感知提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用数据监听,可以实现主题切换、语言变更等实时响应功能。

本文基于@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。

http://www.cnnetsun.cn/news/3616089.html

相关文章:

  • MSP430电源管理模块PMM深度解析:SVS/SVM监控与VCORE动态调节实战
  • UE5 GAS模块化GameplayEffect设计:解决RPG技能系统维护难题
  • Unity VR操控六轴机械臂:数字孪生与ROS通信实践
  • ComfyUI图像放大技术:原理、工作流与优化
  • ADS7851EVM-PDK评估套件:双通道同步采样ADC性能评估与实战指南
  • C++自定义异常类设计:从基础原理到工业级实现
  • 千笔与WPS AI写作工具深度对比与实战评测
  • 多线程改造Il2CppDumper:大幅提升Unity逆向分析效率实战
  • DS90Ux92x FPD-Link III SerDes芯片I2S音频接口配置与调试全指南
  • 中国开源权重模型实战指南:从GLM到Kimi的部署与应用
  • TLS 指纹字段深读:JA3/JA4、ALPN、Cipher Suites 到底该怎么看
  • 鸿蒙 构建效率提升:并行构建和增量构建
  • 光伏电站智能巡检:无人机与AI技术的应用与优化
  • CC1101寄存器深度解析与RF1A接口实战:从原理到稳定通信
  • MSP430F5529 USB通信实践:从UART到CDC/HID-Datapipe的数据传输
  • Python从入门到实战(十八):协程与异步编程
  • 智能家居情感分析:NLP与机器学习的实践应用
  • 《计算机组成原理教程》全套PPT课件
  • XR技术在职业体育训练中的革命性应用
  • 深入解析MSP430 MPY32硬件乘法器:原理、模式与嵌入式DSP实战
  • AI论文写作工具实测:9款神器提升学术效率
  • AI技术栈解析:大模型、多模态与智能体实践
  • AGI与科学智能:上海方案的技术路径与应用前景
  • 证据驱动的术语自适应:解决同声传译中的专业术语难题
  • TI Edge AI Studio实战:从零构建工业视觉分类模型
  • AI多智能体系统在智能制造中的生产调度优化实践
  • 自适应电压调节(AVS)技术:芯片能效优化的闭环控制之道
  • 医疗票据OCR技术解析与API对接实战
  • 计算机毕业设计之基于位置管理的员工考勤打卡系统设计app
  • GPT-5与GPT-OSS:新一代AI智能体的架构与产业实践