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

FMX开发:应用从最近任务列表划走时如何停止后台服务

实现方案

核心逻辑依赖Android系统原生提供的任务移除回调,不需要额外监听广播或者其他复杂逻辑:

  • 方法一:重写服务的onTaskRemoved回调(适用于需要在任务移除时做额外资源清理的场景)
    当用户从最近任务列表划走应用时,系统会主动调用当前运行中服务的onTaskRemoved(Intent rootIntent)方法,你可以在该方法中加入停止服务的逻辑:
    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);
        // 停止当前服务
        stopSelf();
        // 其他需要释放的资源、终止的子线程都可以在这里处理
    }
    
    如果你使用的是非Java的跨平台框架调用Android服务,只要给TJService绑定该回调的实现即可,逻辑和原生完全一致。
  • 方法二:修改Manifest注册配置(适用于不需要额外清理逻辑的场景)
    直接在AndroidManifest.xml里的服务注册节点添加android:stopWithTask="true"属性,用户划走任务时系统会直接终止该服务关联的整个进程,无需编写额外代码:
    <service
        android:name=".TJService"
        android:stopWithTask="true" />
    

注意事项

  • 不要在服务注册节点配置android:stopWithTask="false",否则onTaskRemoved回调不会被触发
  • 部分厂商定制ROM(如小米、华为、荣耀)对后台服务逻辑有自定义限制,如果你使用的是前台服务,可能需要申请后台运行权限才能保证回调正常触发
  • 你当前配置的TJService.JavaClass._GetSTART_NOT_STICKY仅作用于服务被系统异常杀死后的重启逻辑,和任务划走场景无关,不会影响上述方案的生效

内容的提问来源于stack exchange,提问作者Bluerock Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:42:03