You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于just_audio_background在Android关闭应用后持续播放的疑问

关于just_audio_background在Android上的播放行为问题

行为是否符合预期?

这个行为是符合just_audio_background默认设计的。该库依赖Android的MediaSession和前台服务维持后台音频播放,即使用户从最近任务列表关闭应用,只要前台服务未被终止,音频就会继续播放。下拉关闭小部件仅移除了UI控件,并不会停止对应的后台服务。

实现“关闭应用即停止播放”的方案

要满足关闭应用就终止音频的需求,需要在应用销毁时主动停止后台播放服务,具体可通过以下方式实现:

  • 在Flutter层监听应用生命周期的detached状态,触发停止逻辑:

    WidgetsBinding.instance.addObserver(LifecycleEventHandler(
      detachedCallback: () async {
        // 停止音频播放并释放资源
        await audioPlayer.stop();
        await audioPlayer.dispose();
        // 终止后台任务
        JustAudioBackground.stopBackgroundTask();
      },
    ));
    
    class LifecycleEventHandler extends WidgetsBindingObserver {
      final VoidCallback? detachedCallback;
    
      LifecycleEventHandler({this.detachedCallback});
    
      @override
      void didChangeAppLifecycleState(AppLifecycleState state) {
        if (state == AppLifecycleState.detached) {
          detachedCallback?.call();
        }
      }
    }
    
  • 确保AndroidManifest.xml中配置的服务未设置永久后台属性,避免系统阻止服务停止。

  • 可通过Android原生代码注册ActivityManager回调,监听应用从最近任务列表被移除的事件,触发音频停止逻辑。

注意:如果应用依赖前台服务播放音频,系统会优先保留服务,必须主动调用停止方法才能确保音频终止。

内容的提问来源于stack exchange,提问作者Rafael Schaffer Gimenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:54:52