Почему сеть недоступна, когда WearOS WorkManager выполняет мое задание?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему сеть недоступна, когда WearOS WorkManager выполняет мое задание?

Сообщение Anonymous »

У меня есть фоновое задание в приложении WearOS, которое вызывает API, обновляет рабочую базу данных и уведомляет мою плитку и осложнения о новых данных.
Иногда фоновое задание выполняется, но сеть недоступна. Вот мой соответствующий код WorkManager:

Код: Выделить всё

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

val repeatingRequest = PeriodicWorkRequestBuilder(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)
Я вижу сообщения 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:  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 "": No address associated with hostname
Message: Unable to resolve host "": No address associated with hostname
Cause: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) Class: class java.net.UnknownHostException
Есть идеи, что здесь может происходить?

Подробнее здесь: https://stackoverflow.com/questions/796 ... uns-my-job
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»