Work goes through a series of [`State`](https://developer.android.com/reference/androidx/work/WorkInfo.State)
changes over its lifetime.

## One-time work states

For a
[`one-time`](https://developer.android.com/topic/libraries/architecture/workmanager/how-to/define-work#schedule_one-time_work)
work request, your work begins in an
[`ENQUEUED`](https://developer.android.com/reference/androidx/work/WorkInfo.State#ENQUEUED) state.

In the `ENQUEUED` state, your work is eligible to run as soon as its
[`Constraints`](https://developer.android.com/reference/androidx/work/Constraints) and initial delay timing
requirements are met. From there it moves to a
[`RUNNING`](https://developer.android.com/reference/androidx/work/WorkInfo.State#RUNNING) state and then
depending on the outcome of the work it may move to
[`SUCCEEDED`](https://developer.android.com/reference/androidx/work/WorkInfo.State#SUCCEEDED),
[`FAILED`](https://developer.android.com/reference/androidx/work/WorkInfo.State#FAILED), or possibly back to
`ENQUEUED` if the result is
[`retry`](https://developer.android.com/reference/androidx/work/ListenableWorker.Result#retry()). At any
point in the process, work can be cancelled, at which point it will move to the
[`CANCELLED`](https://developer.android.com/reference/androidx/work/WorkInfo.State#CANCELLED) state.

Figure 1 illustrates the life of one-time work, with the events that may take it to another state.

![](https://developer.android.com/static/images/topic/libraries/architecture/workmanager/how-to/one-time-work-flow.png)

**Figure 1.** State diagram for one-time work.

`SUCCEEDED`, `FAILED` and `CANCELLED` all represent a terminal state for this
work. If your work is in any of these states,
[`WorkInfo.State.isFinished()`](https://developer.android.com/reference/androidx/work/WorkInfo.State#isFinished())
returns true.

## Periodic work states

Success and failed states apply only to one-time and
[chained work](https://developer.android.com/topic/libraries/architecture/workmanager/how-to/chain-work).
For [periodic work](https://developer.android.com/topic/libraries/architecture/workmanager/how-to/define-work#schedule_periodic_work),
there is only one terminal state, `CANCELLED`. This is because periodic work
never ends. After each run, it's rescheduled, regardless of the result. Figure
2 depicts the condensed state diagram for periodic work.

![](https://developer.android.com/static/images/topic/libraries/architecture/workmanager/how-to/periodic-work-states.png)

**Figure 2.** State diagram for periodic work.

## Blocked state

There is one final state we haven't mentioned yet, and that is `BLOCKED`. This
state applies to work that is orchestrated in a series, or chain of work. Work
chains, and their state diagram, are covered in
[Chaining work](https://developer.android.com/topic/libraries/architecture/workmanager/how-to/chain-work).

# Next Steps

In [Managing work](https://developer.android.com/topic/libraries/architecture/workmanager/how-to/managing-work),
you'll learn more about how to manage and monitor the progress of your work.