我正在尝试将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
但这不起作用。我也尝试关闭屏幕并将时钟转发到第二天,依此类推。什么都没用。
答案 0 :(得分:0)
如果要讨论的是测试,最好的选择是使用WorkManager的WorkManagerTestInitHelper
及其直接驱动testDriver
的功能。
// Create request
val workManager = WorkManager.getInstance(context)
val testDriver = WorkManagerTestInitHelper.getTestDriver()
testDriver.setAllConstraintsMet(request.id)
中找到更多信息。