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

WearOS中WorkManager执行任务时网络不可用的问题求助

WearOS中WorkManager执行任务时网络不可用的问题求助

各位好,我最近在WearOS应用里遇到一个头疼的问题,想请教下大家。

我做了个后台同步任务,用WorkManager来调度:调用远程API、更新本地Room数据库,还要通知Tile和组件新数据。按照WorkManager的最佳实践,我给任务加了网络连接和低电量的约束,代码如下:

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresBatteryNotLow(true)
    .build()

val repeatingRequest = PeriodicWorkRequestBuilder<RefreshDataWorker>(20, TimeUnit.MINUTES)
    .setConstraints(constraints)
    .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
    .build()

Log.d("WorkManager", "Periodic Work request for sync is scheduled")

WorkManager.getInstance(this).enqueueUniquePeriodicWork(
    RefreshDataWorker.SCHEDULED_WORK_NAME,
    ExistingPeriodicWorkPolicy.UPDATE,
    repeatingRequest
)

本来预期是只有当网络连接正常时,任务才会执行,但实际情况是:有时候明明手机/手表的网络是断的,WorkManager却还是触发了任务,导致API调用失败,抛了UnknownHostException。

我翻了Logcat日志,发现了诡异的地方:系统一开始检测到网络是断开的(isConnected=false),但马上又收到了网络能力变化的广播,显示网络已连接且验证通过,于是WorkManager认为约束满足,触发了任务。但任务执行时,实际网络根本没通,我的Worker里检测到没有活跃网络,API调用也因为无法解析主机地址失败了。

下面是相关的Logcat片段:

WM-DelayedWorkTracker com.mypackage D Scheduling work da88277f-b68e-4ab4-90d3-08673582546c
WM-GreedyScheduler com.mypackage D Starting tracking for da88277f-b68e-4ab4-90d3-08673582546c
WM-ConstraintTracker com.mypackage D a: initial state = true
WM-BrdcstRcvrCnstrntTrc com.mypackage D a: registering receiver
WM-ConstraintTracker com.mypackage D i: initial state = NetworkState(isConnected=false, isValidated=false, isMetered=true, isNotRoaming=true)
WM-NetworkStateTracker com.mypackage D Registering network callback
WM-GreedyScheduler com.mypackage D Constraints not met: Cancelling work ID WorkGenerationalId(workSpecId=da88277f-b68e-4ab4-90d3-08673582546c, generation=408)
WM-NetworkStateTracker com.mypackage D Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=9728Kbps LinkDnBandwidth>=37063Kbps TransportInfo: <SSID: <unknown ssid>, BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, IP: /192.168.1.101, Security type: 2, Supplicant state: COMPLETED, Wi-Fi standard: 11n, RSSI: -53, Link speed: 72Mbps, Tx Link speed: 72Mbps, Max Supported Tx Link speed: 150Mbps, Rx Link speed: 72Mbps, Max Supported Rx Link speed: 150Mbps, Frequency: 5745MHz, Net ID: -1, Metered hint: false, score: 60, isUsable: true, CarrierMerged: false, SubscriptionId: -1, IsPrimary: -1, Trusted: true, Restricted: false, Ephemeral: false, OEM paid: false, OEM private: false, OSU AP: false, FQDN: <none>, Provider friendly name: <none>, Requesting package name: <none><none>MLO Information: , Is TID-To-Link negotiation supported by the AP: false, AP MLD Address: <none>, AP MLO Link Id: <none>, AP MLO Affiliated links: <none>, Vendor Data: <none>> SignalStrength: -53 UnderlyingNetworks: Null]
WM-GreedyScheduler com.mypackage D Constraints met: Scheduling work ID WorkGenerationalId(workSpecId=da88277f-b68e-4ab4-90d3-08673582546c, generation=408)
WM-Processor com.mypackage D e: processing WorkGenerationalId(workSpecId=da88277f-b68e-4ab4-90d3-08673582546c, generation=408)
WM-WorkerWrapper com.mypackage D Starting work for com.mypackage.work.RefreshDataWorker
RefreshDataWorker com.mypackage I No active network.
Repository com.mypackage E Failed to refresh data
Repository com.mypackage I Exception info: java.net.UnknownHostException: Unable to resolve host "<address>": No address associated with hostname
Message: Unable to resolve host "<address>": No address associated with hostname
Cause: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
Class: class java.net.UnknownHostException

我现在的困惑是:为什么WorkManager的网络状态检测和实际情况不一致?明明实际网络是断开的,系统却误判为已连接,导致任务在不满足条件的情况下执行了?有没有人遇到过类似的问题,或者知道可能的原因和解决办法?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:17:57