작업 상태
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
작업은 전체 기간 동안 일련의 State
변경을 거칩니다.
일회성 작업 상태
one-time
작업 요청의 경우 작업이 ENQUEUED
상태에서 시작됩니다.
ENQUEUED
상태에서 작업은 Constraints
및 초기 지연 타이밍 요구사항이 충족되는 즉시 실행될 수 있습니다. 여기에서 작업은 RUNNING
상태로 이동하고 작업 결과에 따라 SUCCEEDED
, FAILED
또는 결과가 retry
라면 다시 ENQUEUED
로 이동할 수 있습니다. 프로세스의 어떤 시점에서든 작업을 취소할 수 있고 작업은 취소 시점에서 CANCELLED
상태로 이동합니다.
그림 1은 작업을 다른 상태로 이동할 수 있는 이벤트가 포함된 일회성 작업의 수명 주기를 보여줍니다.

그림 1. 일회성 작업의 상태 다이어그램입니다.
SUCCEEDED
, FAILED
, CANCELLED
는 모두 작업의 최종 상태를 나타냅니다. 작업이 이러한 상태에 있다면 WorkInfo.State.isFinished()
가 true를 반환합니다.
주기적 작업 상태
성공 및 실패 상태는 일회성 및 체이닝된 작업에만 적용됩니다.
주기적 작업의 경우 최종 상태는 CANCELLED
하나만 있습니다. 주기적 작업은 종료되지 않기 때문입니다. 실행할 때마다 결과와 관계없이 작업이 다시 예약됩니다. 그림 2는 주기적 작업의 상태 다이어그램을 간략하게 보여줍니다.

그림 2. 주기적 작업의 상태 다이어그램입니다.
차단된 상태
아직 언급하지는 않았지만, 마지막으로 소개하는 최종 상태는 BLOCKED
입니다. 이 상태는 일련의 작업 또는 작업 체인에서 조정된 작업에 적용됩니다. 작업 체인과 작업 체인의 상태 다이어그램은 작업 체이닝에서 다룹니다.
다음 단계
작업 관리에서는 작업 진행 상황을 관리하고 모니터링하는 방법을 자세히 알아봅니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Work states\n\nWork goes through a series of [`State`](/reference/androidx/work/WorkInfo.State)\nchanges over its lifetime.\n\nOne-time work states\n--------------------\n\nFor a\n[`one-time`](/topic/libraries/architecture/workmanager/how-to/define-work#schedule_one-time_work)\nwork request, your work begins in an\n[`ENQUEUED`](/reference/androidx/work/WorkInfo.State#ENQUEUED) state.\n\nIn the `ENQUEUED` state, your work is eligible to run as soon as its\n[`Constraints`](/reference/androidx/work/Constraints) and initial delay timing\nrequirements are met. From there it moves to a\n[`RUNNING`](/reference/androidx/work/WorkInfo.State#RUNNING) state and then\ndepending on the outcome of the work it may move to\n[`SUCCEEDED`](/reference/androidx/work/WorkInfo.State#SUCCEEDED),\n[`FAILED`](/reference/androidx/work/WorkInfo.State#FAILED), or possibly back to\n`ENQUEUED` if the result is\n[`retry`](/reference/androidx/work/ListenableWorker.Result#retry()). At any\npoint in the process, work can be cancelled, at which point it will move to the\n[`CANCELLED`](/reference/androidx/work/WorkInfo.State#CANCELLED) state.\n\nFigure 1 illustrates the life of one-time work, with the events that may take it to another state.\n\n**Figure 1.** State diagram for one-time work.\n\n`SUCCEEDED`, `FAILED` and `CANCELLED` all represent a terminal state for this\nwork. If your work is in any of these states,\n[`WorkInfo.State.isFinished()`](/reference/androidx/work/WorkInfo.State#isFinished())\nreturns true.\n\nPeriodic work states\n--------------------\n\nSuccess and failed states apply only to one-time and\n[chained work](/topic/libraries/architecture/workmanager/how-to/chain-work).\nFor [periodic work](/topic/libraries/architecture/workmanager/how-to/define-work#schedule_periodic_work),\nthere is only one terminal state, `CANCELLED`. This is because periodic work\nnever ends. After each run, it's rescheduled, regardless of the result. Figure\n2 depicts the condensed state diagram for periodic work.\n\n**Figure 2.** State diagram for periodic work.\n\nBlocked state\n-------------\n\nThere is one final state we haven't mentioned yet, and that is `BLOCKED`. This\nstate applies to work that is orchestrated in a series, or chain of work. Work\nchains, and their state diagram, are covered in\n[Chaining work](/topic/libraries/architecture/workmanager/how-to/chain-work).\n\nNext Steps\n==========\n\nIn [Managing work](/topic/libraries/architecture/workmanager/how-to/managing-work),\nyou'll learn more about how to manage and monitor the progress of your work."]]