Как проверить на устройстве с помощью WorkManager `setRequiresDeviceIdle (true)` - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь настроить androidx WorkManager, чтобы выполнять какую-то работу один раз в день.

Я настраиваю свою работу следующим образом

val request = PeriodicWorkRequest.Builder(Worker::class.java, 24, TimeUnit.HOURS)
        .setConstraints(
                Constraints.Builder()
                        .setRequiresCharging(true)
                        .setRequiredNetworkType(NetworkType.UNMETERED)
                        .setRequiresDeviceIdle(true)
                        .build()
        )
        .build()

workManager.enqueueUniquePeriodicWork(
        "my-job-name",
        ExistingPeriodicWorkPolicy.REPLACE,
        request
)

И мой Worker классесть некоторые записи.

Я пытаюсь убедиться, что это работает.Проблема в том, что я не вижу своих записей в logcat.Однако он прекрасно работает, когда я удаляю ограничение setRequiresDeviceIdle(true).Может кто-нибудь указать, как я могу поставить свой телефон в состояние, которое работает с setRequiresDeviceIdle(true)?

Я пытался

adb shell dumpsys deviceidle force-idle

Но это не работает.Также я попытался выключить экран и переслать часы на следующий день и так далее.Ничего не сработало.

1 Ответ

0 голосов
/ 01 июля 2019

Если речь идет о тестировании, лучшим вариантом будет использование WorkManager WorkManagerTestInitHelper и его способность управлять непосредственно testDriver.

// Create request
val workManager = WorkManager.getInstance(context)
val testDriver = WorkManagerTestInitHelper.getTestDriver()

testDriver.setAllConstraintsMet(request.id)

Вы можете найтибольше информации в документации тестирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...