覆盖工作经理的截止日期 (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',不包括您的其他限制并包括特定标签。
这意味着您将有两个排队工作人员:
- 真正的工人,有约束和标签,比如
"real_work"
- 覆盖截止日期的工作人员,没有约束、初始延迟和标签,比如
"override"
如果真正的工作人员解雇,您可以致电 workManager.cancelAllWorkByTag("override")
取消覆盖截止日期的工作人员并照常进行。
如果您的覆盖截止日期工作人员解雇,这意味着在您将工作人员排入队列和覆盖截止日期之间没有时间。这是您想要找出替代策略的地方(例如重新排队一个约束较少的新工人等)。如果您希望取消您的实际工作,这也是您想要 workManager.cancelAllWorkByTag("real_work")
的地方。
既然 Work Manager 正在取代 Job Scheduler,我正试图弄清楚如何使用 OneTimeWorkRequest 为 Work Manager 设置覆盖截止日期,就像我们在 Job Scheduler 中所做的那样。我尝试查看约束集,但无法找到等效项。我也查看了 OneTimeWorkRequest.Builder 中的选项,但再次一无所获。我将如何设置覆盖截止日期?
setOverrideDeadline
,根据 its documentation,导致你的工作 运行 ,即使你的其他约束不满足 。 WorkManager 不会那样做:它始终尊重您的约束。
当然,您可以使用 setInitialDelay
将第二个工作请求排队到您想要的时间作为您的 'override deadline',不包括您的其他限制并包括特定标签。
这意味着您将有两个排队工作人员:
- 真正的工人,有约束和标签,比如
"real_work"
- 覆盖截止日期的工作人员,没有约束、初始延迟和标签,比如
"override"
如果真正的工作人员解雇,您可以致电 workManager.cancelAllWorkByTag("override")
取消覆盖截止日期的工作人员并照常进行。
如果您的覆盖截止日期工作人员解雇,这意味着在您将工作人员排入队列和覆盖截止日期之间没有时间。这是您想要找出替代策略的地方(例如重新排队一个约束较少的新工人等)。如果您希望取消您的实际工作,这也是您想要 workManager.cancelAllWorkByTag("real_work")
的地方。