gpt4 book ai didi

android - 为什么使用WorkManager的OneTimeWorkRequest的setInitialDelay()函数,改变设备时间时延迟不生效

转载 作者:行者123 更新时间:2023-12-04 23:51:18 33 4
gpt4 key购买 nike

I would like to use WorkManager to update the DB every 24 hours from midnight.



首先,我知道 Workmanager 的 PeriodicWorkRequest 没有指定工作人员应该在任何给定时间操作。

所以我使用 OneTimeWorkRequest() 给出延迟,然后将 PeriodicWorkRequest() 放入队列中,该队列每 24 小时运行一次。

1.约束
private fun getConstraints(): Constraints {
return Constraints.Builder()
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
.build()
}

2.OneTimeWorkRequest
fun applyMidnightWorker() {

val onTimeDailyWorker = OneTimeWorkRequest
.Builder(MidnightWorker::class.java)
.setInitialDelay(getDelayTime(), TimeUnit.SECONDS)
.setConstraints(getConstraints())
.build()

val workerContinuation =
workManager.beginUniqueWork(Const.DAILY_WORKER_TAG,
ExistingWorkPolicy.KEEP,
onTimeDailyWorker)

workerContinuation.enqueue()
}

getDelayTime() 是
private fun getDelayTime(): Long {
...
return midNightTime - System.currentTimeMillis()
}

3.午夜 worker 类
class MidnightWorker : Worker() {

override fun doWork(): Result {

DailyWorkerUtil.applyDailyWorker()

return Worker.Result.SUCCESS
}
}

4.定期工作请求
fun applyDailyWorker() {

val periodicWorkRequest = PeriodicWorkRequest
.Builder(DailyWorker::class.java, 24, TimeUnit.HOURS)
.addTag(Const.DAILY_WORKER)
.setConstraints(getConstraints()).build()

workManager.enqueue(periodicWorkRequest)

}

我确认 delayTime 过去了,midnightWorker 正在运行。

当然,它可以正常工作,与网络没有任何关系。

然而,测试结果表明延迟时间与设备时间无关。好像是服务器时间

This is my question.

1. No delay according to device time. I want to know if the delay works as per the server time standard.

2. I wonder if the PeriodicWorkRequest can provide InitialDelay like OneTimeWorkRequest.

最佳答案

你用过TimeUnit.SECONDSsetInitialDelaygetDelayTime正在使用毫秒。
这可能是你问题的原因

关于android - 为什么使用WorkManager的OneTimeWorkRequest的setInitialDelay()函数,改变设备时间时延迟不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52088873/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com