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
相关产品推荐
相关产品推荐

