工作在其生命周期中会经历一系列State
更改。
一次性工作状态
对于一次性
工作请求,您的工作从ENQUEUED
状态开始。
在ENQUEUED
状态下,您的工作一旦满足其Constraints
和初始延迟时间要求,即可运行。从那里它会进入RUNNING
状态,然后根据工作的结果,它可能会进入SUCCEEDED
、FAILED
,或者如果结果为retry
,则可能返回到ENQUEUED
。在过程中的任何时候,都可以取消工作,此时它将进入CANCELLED
状态。
图 1 说明了一次性工作的生命周期,以及可能将其带到另一个状态的事件。
图 1. 一次性工作的状态图。
SUCCEEDED
、FAILED
和CANCELLED
都表示此工作的终端状态。如果您的工作处于这些状态中的任何一个,则WorkInfo.State.isFinished()
返回 true。
周期性工作状态
成功和失败状态仅适用于一次性和链式工作。对于周期性工作,只有一个终端状态,即CANCELLED
。这是因为周期性工作永不结束。每次运行后,它都会重新安排,无论结果如何。图 2 描述了周期性工作的简化状态图。
图 2. 周期性工作的状态图。
阻塞状态
还有一个我们还没有提到的最终状态,那就是BLOCKED
。此状态适用于一系列或工作链中协调的工作。工作链及其状态图在链接工作 中进行了介绍。
后续步骤
在管理工作 中,您将了解有关如何管理和监控工作进度的更多信息。