android - 在运行周期性任务之前立即运行工作 - WorkManager
问题描述
我想在流程结束后立即运行定期任务,然后运行定期日常任务。我知道如何运行定期任务,但我的问题是我需要立即运行此定期任务一次,并且在该定期定期任务应该每天运行之后。目前我需要等待1天才能执行周期性任务,我该怎么做?
解决方案
最好的选择是使用一个OneTimePeriodicWorker
在返回之前安排您的定期 Worker Result.success()
。
因此,您将 WorkRequest 排入队列以立即运行:
val asSoonAsPossibleWorkRequest = OneTimeWorkRequestBuilder<InitialWorker>
.addTag(TAG_OUTPUT)
.build()
WorkManager.getInstance(context).enqueue(asSoonAsPossibleWorkRequest)
并且您的 Worker 在返回之前将定期 Worker 排入队列Result.success()
:
class InitialWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
// Do Something Useful
// Enqueue the periodic Worker
val dailyWorkRequest = PeriodicWorkRequestBuilder<DailyWorker>(1, TimeUnit.DAYS)
.addTag(TAG_OUTPUT)
.build()
WorkManager.getInstance(applicationContext).enqueue(dailyWorkRequest)
return Result.success()
}
}
推荐阅读
- php - Django 截断树枝中的单词
- php - PHPMyAdmin 上传错误“文件太大”
- python - 将函数应用于列表 Python 中的所有项目
- java - 正则表达式提取两个从连字符中分离出来的双数
- python - 对嵌套打印使用中的打印顺序感到困惑
- mysql - 如何将本地托管的 Wordpress 站点迁移到远程主机?
- wordpress - 显示错误 Woocommerce 管理员编辑产品页面
- javascript - 如何使用 Javascript 使用 64382 行 JSON 数据创建图表(如 Excel)。(没有 Chart.js 或其他类似的东西,只有 js、html 或 css)
- sql - 匹配多个名字
- c - 如何让 scanf 函数打印整个数组