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

Android后台WorkManager任务网络连接异常问题求助

Android后台WorkManager任务网络不稳定问题

我在Android应用中使用WorkManager执行后台任务,该任务需通过网络向API发送HTTP POST请求。应用在前台运行时一切正常,但后台运行时任务频繁出现无网络情况,导致POST请求失败,在Pixel 7 API 35模拟器上无法稳定运行。

注:不想为任务设置NetworkType.CONNECTED约束,因为其主要功能是位置追踪而非网络操作。

已确认设备WiFi开启,应用权限未被剥夺,所有权限均已允许,最低SDK版本为29(Android 10)。

权限配置(AndroidManifest.xml)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

MainActivity.kt代码(设置20秒延迟便于切换到后台)

val oneTimeRequest = OneTimeWorkRequestBuilder<LocationWorker>()
   .setInitialDelay(20, TimeUnit.SECONDS)
   .build()
WorkManager.getInstance(context)
   .enqueue(oneTimeRequest)

Worker.kt代码

class LocationWorker(
    context: Context,
    workerParams: WorkerParameters
): CoroutineWorker(context, workerParams) {

   override suspend fun doWork(): Result {
      
      // ... (执行地理位置和数据库操作)

      if (isNetworkAvailable(applicationContext)) {
         // 应用在前台时总会进入此分支
         Log.d("LocationWorker", "All fine.")
      } else {
         // 应用不在前台时总会进入此分支
         Log.d("LocationWorker", "Network not available.")
      }
   }

   private fun isNetworkAvailable(context: Context): Boolean {
      val connectivityManager = context.getSystemService(ConnectivityManager::class.java)
      val network = connectivityManager.activeNetwork ?: return false
      val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
      return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
   }
}

更新信息

有时后台网络连接正常,有时失败,无固定规律,稳定性极差(类似随机事件)。已创建问题的最小复现Demo,包含完整应用代码及说明文档,可按步骤测试观察问题。推测该问题可能仅在模拟器出现,正在测试真机。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:22:46