HarmonyOS鸿蒙Next中应用无长时任务退后台,对应资源未释放,存在直接或者间接持阻止系统休眠的锁问题

HarmonyOS鸿蒙Next中应用无长时任务退后台,对应资源未释放,存在直接或者间接持阻止系统休眠的锁问题 【问题描述】:华为审核不通过

【问题现象】:应用无长时任务退后台,对应资源未释放,存在直接或者间接持阻止系统休眠的锁问题:AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay,AudioOffloadBackgroundPlay

【版本信息】:DevEco Studio 5.1.1 Release、HarmonyOS6.0.0、“compatibleSdkVersion”: “5.0.0(12)”,“targetSdkVersion”: “5.1.1(19)”

【复现代码】:审核不通过

【尝试解决方案】:代码中含有后台权限申请、AVSession配置


更多关于HarmonyOS鸿蒙Next中应用无长时任务退后台,对应资源未释放,存在直接或者间接持阻止系统休眠的锁问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

长时任务是有一些限制的:

  • 申请长时任务后,应用未执行相应的业务,系统会对应用进行管控,即应用退至后台会被挂起。如系统检测到应用申请了AUDIO_PLAYBACK(音视频播放),但实际未播放音乐。
  • 申请长时任务后,应用执行的业务类型与申请的不一致,系统会对应用进行管控,即应用退至后台会被挂起。如系统检测到应用只申请了AUDIO_PLAYBACK(音视频播放),但实际上除了播放音乐(对应AUDIO_PLAYBACK类型),还在进行录制(对应AUDIO_RECORDING类型)。
  • 申请长时任务后,应用的业务已执行完,系统会对应用进行管控,即应用退至后台会被挂起。
  • 若运行长时任务的进程后台负载持续高于所申请类型的典型负载,系统会对应用进行管控,即应用退至后台会被挂起或终止。

说明:

应用按需求申请长时任务,当应用无需在后台运行(任务结束)时,要及时主动取消长时任务,否则应用退至后台会被系统挂起。例如用户主动点击音乐暂停播放时,应用需及时取消对应的长时任务;用户再次点击音乐播放时,需重新申请长时任务。

若音频在后台播放时被打断,系统会自行检测和停止长时任务,音频重启播放时,需要再次申请长时任务。

后台播放音频的应用,在停止长时任务的同时,需要暂停或停止音频流,否则应用会被系统强制终止。

更多关于HarmonyOS鸿蒙Next中应用无长时任务退后台,对应资源未释放,存在直接或者间接持阻止系统休眠的锁问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,应用退至后台但未释放资源并持有系统休眠锁,通常由以下原因导致:后台任务未正确清理、资源引用未解除或系统服务调用不当。这可能导致设备功耗增加和性能下降。建议检查应用的后台行为管理,确保在onBackground回调中及时释放资源并解除休眠锁。

从问题描述看,应用在后台没有释放音频相关资源,导致系统无法正常休眠。重复出现的 AudioOffloadBackgroundPlay 表明应用在退到后台时,音频播放相关的资源未正确释放,系统检测到存在阻止休眠的锁。

建议检查以下方面:

  1. 音频资源释放:确保应用退后台时,主动调用 AudioManager 或相关音频组件的释放方法,停止播放并释放音频会话。
  2. 后台任务管理:如果应用不需要后台播放,移除 AudioOffloadBackgroundPlay 相关权限或配置,避免系统误判为长时任务。
  3. AVSession 生命周期:检查 AVSession 的注册与注销逻辑,确保退后台时及时注销会话,避免持有系统资源。
  4. 权限配置:确认 ohos.permission.KEEP_BACKGROUND_RUNNING 等后台权限是否必要,如非必需可移除以减少系统限制。

通过以上调整,通常可解决资源未释放导致的休眠阻止问题。

回到顶部