android - 使用 WorkManager 的 PeriodicWorkRequest
问题描述
由于 WorkManager 是 Google I/O 中新引入的,我正在尝试使用 workmanager 定期执行任务,
我正在做的是,使用PeriodicWorkRequest
以下方式安排工作:
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(SyncJobWorker.class, MY_SCHEDULE_TIME, TimeUnit.MILLISECONDS)
.addTag(TAG)
.setConstraints(constraints)
.build();
WorkManager instance = WorkManager.getInstance();
if (instance != null) {
instance.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, build);
}
我遇到的问题是当我请求时PeriodicWorkRequest
它也会立即开始工作,
- 有人知道如何停止立即执行工作吗?在使用 PeriodicWorkRequest 时。
- 还想知道我们如何重新安排工作?如果我想更改已经安排好的工作时间怎么办?
我在用着 :implementation "android.arch.work:work-runtime:1.0.0-alpha04"
任何帮助将不胜感激。
解决方案
您可以通过在PeriodicWorkRequest.Builder中使用弹性周期来实现这一点。例如,如果您想在重复间隔结束时(例如 8 小时)在 15 分钟内运行您的 Worker,代码将如下所示:
val periodicRefreshRequest = PeriodicWorkRequest.Builder(
RefreshWorker::class.java, // Your worker class
8, // repeating interval
TimeUnit.HOURS,
15, // flex interval - worker will run somewhen within this period of time, but at the end of repeating interval
TimeUnit.MINUTES
)
推荐阅读
- arduino - 串行监视器没有输出
- google-apps-script - 非管理员使用目录 api 在 google 组中添加成员
- c# - SSIS Outputbuffer错误“脚本组件上的primeoutput方法返回成功,但没有报告行集结束”
- java - 正则表达式未从 html 标记中提取图像 url
- macos - 防止 apache 用 localhost 替换完全限定的服务器名称?
- php - Wordpress 不会返回标题中带有撇号的搜索结果
- hibernate - Hibernate CrudRepository - 选择第一行
- reactjs - 手动输入一个 url 刷新整个反应应用程序
- android - 位置有时会返回空值
- html - 对烧瓶模板的更改未显示在已部署的网站上