首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我将WorkManager设置为09:00,那么在哪个范围内运行它?

问如果我将WorkManager设置为09:00,那么在哪个范围内运行它?
EN

Stack Overflow用户
提问于 2019-04-28 18:12:53
回答 1查看 143关注 0票数 0

我需要每天早上9点执行任务。我知道AlarmManager,但我想使用WorkManager。在哪个范围内运行这段代码?+- 10分钟?有人试过吗?我不使用任何约束。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-29 16:40:15

如果您需要在上午9点整运行您的工作,那么WorkManager可能不是您的最佳选择。

您在WorkManager中设置的时间段,对于定期工作人员来说是一个最小值,但是,如果设备处于打瞌睡模式,您的工作直到下一个执行窗口才会运行。考虑到您不能指定一天中的某个时间来运行您的工作,而只能指定一段时间(假设是24小时)。执行这项工作的时间将一天又一天地流逝。

因此,在目前的情况下,普通的PeriodicWorkRequest可能不是用例的最佳选择。

另一种选择是使用第二天使用您在员工中计算的初始dalay来调度自己的OneTimeWorkRequest:

代码语言:javascript
复制
class DailyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) 
{
    override fun doWork(): Result {
        // Do Something

        val now = LocalTime.now()
        val nineAM = LocalTime.parse("09:00:00")
        val timeDiff = Duration.ofHours(24).minus(Duration.between(nineAM, now))
        val dailyWorkRequest = OneTimeWorkRequestBuilder<DailyWorker>()
                .setInitialDelay(timeDiff)
                .addTag(TAG_OUTPUT)
                .build()
        WorkManager.getInstance(applicationContext).enqueue(dailyWorkRequest)

        return Result.success()
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55893197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档