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

如何在熄屏及按Home键退后台时保持Android Service运行(SDK30)

Android 11(SDK 30)熄屏后台服务网络请求异常解决方案

问题根因

你之前配置的WakeLock仅能保持CPU唤醒,无法绕过Android 11(SDK 30)及后续版本的后台资源限制,同时你已经实现的前台服务仅能保证Service进程存活,网络请求失败是由以下限制导致的:

  • 系统自带的电池优化策略会在熄屏后5~10分钟限制后台应用的网络访问,即使服务存活也会断网
  • 国内厂商(小米、华为、OV等)的定制系统额外增加了后台网络权限、省电策略限制,优先级高于原生Android的规则
  • 若使用移动数据,系统默认开启后台数据限制,未授权的应用熄屏后无法使用移动网络

可行解决方案

1. 申请必要的运行时权限

首先在AndroidManifest.xml中添加基础权限:

<!-- 基础网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 申请忽略电池优化权限 -->
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

应用启动时动态申请忽略电池优化权限:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    String packageName = getPackageName();
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    if (!pm.isIgnoringBatteryOptimizations(packageName)) {
        Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
        intent.setData(Uri.parse("package:" + packageName));
        startActivity(intent);
    }
}

2. 前台服务配置适配SDK 30要求

SDK 30要求前台服务必须声明服务类型,在清单文件中给你的服务增加foregroundServiceType属性,数据同步场景选择dataSync即可:

<service
    android:name=".YourDataSyncService"
    android:foregroundServiceType="dataSync" />

启动前台服务时,通知渠道优先级需要设置为NotificationManager.IMPORTANCE_LOW及以上,避免系统回收前台服务权限。

3. 网络请求逻辑适配

熄屏后网络波动会变大,需要调整网络请求的容错配置:

  • 不要依赖应用主线程执行网络请求,将请求逻辑放到服务的子线程/协程IO调度器中执行
  • 配置合理的超时重试策略,OkHttp配置示例:
val okHttpClient = OkHttpClient.Builder()
    .connectTimeout(30, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .writeTimeout(30, TimeUnit.SECONDS)
    .retryOnConnectionFailure(true)
    .build()
  • 如果对数据同步时效要求不高,可以配合WorkManager的周期性任务实现请求兜底,避免单次请求失败丢失数据。

4. 国内厂商定制系统适配

国内厂商的系统限制优先级高于原生规则,需要引导用户手动开启对应权限:

  • 开启应用的「后台活动权限」「允许后台使用移动数据/WiFi」
  • 将应用的省电策略设置为「无限制」
  • 部分厂商需要额外开启「自启动权限」才能保证后台稳定运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:09:00