
前言应用前后台状态监听是移动开发中的常见需求用于暂停/恢复动画、保存临时数据、控制网络请求等场景。pura/harmony-utils的AppUtil提供了便捷的前后台状态监听方法开发者无需手动注册AbilityLifecycleCallbacks即可轻松感知应用状态变化。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、前后台监听核心APIAppUtil提供了以下前后台监听方法支持注册和取消监听方法说明参数返回类型onForeground(callback)监听应用切到前台() voidvoidonBackground(callback)监听应用切到后台() voidvoidoffForeground(callback)取消前台监听() voidvoidoffBackground(callback)取消后台监听() voidvoid1.1 核心特性简洁易用无需手动注册AbilityLifecycleCallbacks一行代码即可监听回调机制基于回调函数的事件驱动模式灵活高效生命周期安全支持注册和取消避免内存泄漏主线程执行回调在主线程执行可直接更新UI1.2 前后台回调适用场景场景前台回调后台回调动画控制恢复动画暂停动画定时任务重启定时器清除定时器数据保存-保存草稿数据网络请求恢复轮询暂停轮询播放器继续播放暂停播放二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 监听前后台切换import{AppUtil}frompura/harmony-utils;EntryComponentstruct ForegroundDemo{Stateresult:string;privateforegroundCallback(){this.result应用已切到前台 ✅\n可以恢复动画和网络请求;};privatebackgroundCallback(){this.result应用已切到后台 ⏸️\n建议暂停动画和定时任务;};aboutToAppear(){AppUtil.onForeground(this.foregroundCallback);AppUtil.onBackground(this.backgroundCallback);}aboutToDisappear(){AppUtil.offForeground(this.foregroundCallback);AppUtil.offBackground(this.backgroundCallback);}build(){Column({space:12}){Button(检查监听状态).width(100%).onClick((){this.result前后台监听已注册\n切换应用即可触发回调;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}三、实际应用场景3.1 暂停/恢复动画AppUtil.onBackground((){this.pauseAnimation();});AppUtil.onForeground((){this.resumeAnimation();});3.2 保存临时数据import{AppUtil,PreferencesUtil}frompura/harmony-utils;AppUtil.onBackground((){PreferencesUtil.putString(draft,this.draftContent);});3.3 控制定时器AppUtil.onBackground((){clearInterval(this.timerId);});AppUtil.onForeground((){this.startTimer();});四、进阶用法4.1 封装前后台管理器import{AppUtil}frompura/harmony-utils;classAppLifecycleManager{privatecallbacks:Array()void[];registerOnForeground(callback:()void){AppUtil.onForeground(callback);this.callbacks.push(callback);}registerOnBackground(callback:()void){AppUtil.onBackground(callback);this.callbacks.push(callback);}unregisterAll(){this.callbacks.forEach(cb{AppUtil.offForeground(cb);AppUtil.offBackground(cb);});this.callbacks[];}}五、注意事项生命周期管理务必在aboutToDisappear中取消监听避免内存泄漏回调引用注册和取消监听需使用同一个回调引用主线程执行回调在主线程执行避免耗时操作初始化依赖使用前需确保AppUtil.init()已调用多次注册避免对同一个回调重复注册六、常见问题Q1: 回调没有触发怎么办检查AppUtil.init()是否已正确调用以及回调引用是否正确。Q2: 取消监听后仍然收到回调确保注册和取消使用的是同一个回调函数引用建议使用类成员变量保存引用。Q3: 可以注册多个回调吗可以注册多个不同的回调函数每个回调都会在前后台切换时被调用。Q4: 回调中可以执行异步操作吗回调在主线程执行可以启动异步任务但不建议在回调中直接执行耗时同步操作。总结AppUtil的前后台监听方法简化了应用状态感知的实现开发者可以轻松在前后台切换时执行相应逻辑。本文详细介绍了核心API、使用步骤、实际应用场景、进阶用法以及常见问题的解决方案。合理利用前后台回调可以优化应用性能和用户体验。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。