WorkManager с сетевыми ограничениями не работает на эмуляторе Android 9 - PullRequest
1 голос
/ 01 мая 2019

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.

Вопрос: Как настроить это на эмуляторе?

...