覆盖工作经理的截止日期 (Android Studio)

Override Deadline for Work Manager (Android Studio)

既然 Work Manager 正在取代 Job Scheduler,我正试图弄清楚如何使用 OneTimeWorkRequest 为 Work Manager 设置覆盖截止日期,就像我们在 Job Scheduler 中所做的那样。我尝试查看约束集,但无法找到等效项。我也查看了 OneTimeWorkRequest.Builder 中的选项,但再次一无所获。我将如何设置覆盖截止日期?

setOverrideDeadline,根据 its documentation,导致你的工作 运行 ,即使你的其他约束不满足 。 WorkManager 不会那样做:它始终尊重您的约束。

当然,您可以使用 setInitialDelay 将第二个工作请求排队到您想要的时间作为您的 'override deadline',不包括您的其他限制并包括特定标签。

这意味着您将有两个排队工作人员:

  1. 真正的工人,有约束和标签,比如 "real_work"
  2. 覆盖截止日期的工作人员,没有约束、初始延迟和标签,比如 "override"

如果真正的工作人员解雇,您可以致电 workManager.cancelAllWorkByTag("override") 取消覆盖截止日期的工作人员并照常进行。

如果您的覆盖截止日期工作人员解雇,这意味着在您将工作人员排入队列和覆盖截止日期之间没有时间。这是您想要找出替代策略的地方(例如重新排队一个约束较少的新工人等)。如果您希望取消您的实际工作,这也是您想要 workManager.cancelAllWorkByTag("real_work") 的地方。