За время своего существования произведение проходит через ряд изменений State.
Однократные рабочие состояния
Для запроса на работу one-time работа начинается в состоянии ENQUEUED.
В состоянии ENQUEUED задача может быть запущена, как только будут выполнены требования к Constraints и начальной задержке. Затем он переходит в состояние RUNNING, а после этого в зависимости от результата работы – в состояние SUCCEEDED, FAILED или обратно в состояние ENQUEUED, если результат – retry. На любом этапе процесса работу можно отменить, после чего она перейдет в состояние CANCELLED.
На рисунке 1 показан жизненный цикл однократной задачи и события, которые могут изменить ее состояние.

Рисунок 1. Диаграмма состояний для однократной задачи.
SUCCEEDED, FAILED и CANCELLED – это конечные статусы. Если ваша работа находится в одном из этих состояний, WorkInfo.State.isFinished() возвращает значение true.
Состояния периодической работы
Статусы успешного и неуспешного выполнения применяются только к однократным и связанным задачам.
Для периодических задач есть только одно конечное состояние – CANCELLED. Это связано с тем, что периодическая работа
никогда не заканчивается. После каждого выполнения он планируется заново, независимо от результата. На рисунке 2 показана сокращенная диаграмма состояний для периодической работы.

Рисунок 2. Диаграмма состояний для периодической работы.
Заблокировано
Есть ещё одно состояние, о котором мы не упомянули, – BLOCKED. Это состояние относится к работе, которая организована в виде серии или цепочки работ. Цепочки задач и их диаграмма состояний описаны в разделе Связывание задач.
Дальнейшие действия
В разделе Управление работой вы узнаете, как управлять ходом работы и отслеживать его.