android - PeriodicWorkRequest 初始延迟的任何方式
问题描述
对于OneTimeWorkRequest
,我们必须setInitialDelay
指定初始延迟。
但是,没有这样的设施PeriodicWorkRequest
。
有没有可靠的方法来实现这一目标?
一种不太可靠的方法是让一个延迟的OneTimeWorkRequest
工作人员来设置PeriodicWorkRequest
. 不过这样比较麻烦,而且有可能会出现哪里OneTimeWorkRequest
失败,无法安装PeriodicWorkRequest
。
解决方案
由于系统运行您的工作,您无法控制它将运行的确切时间。
创建工作执行延迟的最佳选择是使用它PeriodicWorkRequest.Builder
并提供 aflexInterval
作为第四个参数:
PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(
SyncJobWorker.class,
REPEAT_INTERVAL, // repeatInterval
TimeUnit.MILLISECONDS, // repeatIntervalTimeUnit
FLEX_INTERVAL, // flexInterval
TimeUnit.MILLISECONDS) // flexIntervalTimeUnit
.build();
创建一个 PeriodicWorkRequest 以在每个间隔周期的弹性周期内定期运行一次。见下图。弹性周期从intervalMillis - flexMillis 开始到间隔结束。intervalMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS 并且 flexMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS。
推荐阅读
- java - Java Servlet (Tomcat 9) 中的 WebSocket 没有类路径扫描
- python - 在没有任何 python 子包的情况下创建的 pip 轮
- c# - 从调试到发布的 MVC 应用程序存储的输入(双数据类型)的表存储不同
- java - 使用 apache poi 转换时如何更改边距
- python - Python:Selenium chromedriver 不适用于按钮单击
- azure - 为启用身份验证的 Azure Web 应用服务中部署的 Web api 启用 CORS
- laravel - Laravel 5.7 和 Vue 路由模式
- php - 每个 Wordpress 页面都有不同的徽标
- python - 在python中的函数内向字典添加键和值
- javascript - 获取组件数组的长度