WorkManager поставил в очередь работу с сетевым ограничением, ставил в очередь только без запуска на эмуляторе Android 9
8532-8549 D/WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver enabled
8532-8549 D/WM-SystemJobScheduler: Scheduling work ID cdded304-5021-4e94-a13c-2e0746d54a58 Job ID 0
8532-8549 D/WM-GreedyScheduler: Starting tracking for [cdded304-5021-4e94-a13c-2e0746d54a58]
8532-8549 D/WM-ConstraintTracker: NetworkStateTracker: initial state = [ Connected=true Validated=false Metered=false NotRoaming=true ]
8532-8549 D/WM-NetworkStateTracker: Registering network callback
8532-8549 D/WM-GreedyScheduler: Constraints not met: Cancelling work ID cdded304-5021-4e94-a13c-2e0746d54a58
8532-8549 D/WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver enabled
8532-8549 D/WM-SystemJobScheduler: Scheduling work ID fde1a327-10dc-4356-8145-b1f624f99d48 Job ID 1
8532-8549 D/WM-GreedyScheduler: Starting tracking for [fde1a327-10dc-4356-8145-b1f624f99d48]
8532-8549 D/WM-GreedyScheduler: Constraints not met: Cancelling work ID cdded304-5021-4e94-a13c-2e0746d54a58
8532-8549 D/WM-GreedyScheduler: Constraints not met: Cancelling work ID fde1a327-10dc-4356-8145-b1f624f99d48
РЕДАКТИРОВАТЬ
fun enqueueUniqueWork() {
WorkManager.getInstance().enqueueUniqueWork(
App.ANONYMOUS_LOGIN,
ExistingWorkPolicy.KEEP,
OneTimeWorkRequestBuilder<AnonymousLoginWork>()
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
)
}
ОБНОВЛЕНИЕ
Я обнаружил, что ConnectivityManager.activeNetwork не имеет возможности NetworkCapabilities.NET_CAPABILITY_VALIDATED, когда приложение работает на круговом эмуляторе Android, поэтому сетевое ограничение не соблюдено.https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkConnectedController.java#49 https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java#118 Из исходного кода видно, что сетевое ограничение изменено на isConnected && isValidated , что означает, что текущая активная сеть должна иметь NetworkCapabilitiesВозможность .NET_CAPABILITY_VALIDATED.
Вопрос: Как настроить это на эмуляторе?