Android的WorkManager中Work Request是否支持设置1个月、1年等长延迟时长?
WorkManager WorkRequest长延迟周期设置说明
WorkRequest完全支持设置1个月、1年甚至更长时间的延迟执行周期,官方没有设定最大延迟时长的上限。
- 底层逻辑支撑:WorkManager存储延迟时间使用的是Long类型的时间戳,单位为毫秒。1年时长换算为毫秒约为3.15×10¹⁰,远小于Long类型的最大值9×10¹⁸,只要传入的延迟时长换算后不超过该值就可以正常设置。
- 任务可靠性说明:只要你使用的是默认的持久化WorkRequest,即使设备重启、应用被后台杀死,已提交的延迟任务也会被WorkManager自动保留,到达设定时间后会正常触发执行。
- 注意事项:
- 任务能否正常执行受系统权限影响,如果用户将你的应用加入后台运行限制名单、禁止应用自启动,到达触发时间的任务可能会被系统拦截,该问题属于系统权限限制,和WorkManager本身的能力无关。
- 如果使用的是
PeriodicWorkRequest周期任务,仅限制了最小重复周期为15分钟,最大周期没有限制,设置1年的重复周期同样合法。
- 示例代码(Kotlin):
// 配置1年延迟的一次性任务 val yearDelayWork = OneTimeWorkRequestBuilder<CustomWorker>() .setInitialDelay(365, TimeUnit.DAYS) .build() // 提交任务 WorkManager.getInstance(context).enqueue(yearDelayWork)
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

