Android

WorkManager (2) : 작업 상태

까망사과 2022. 12. 2. 20:00

WorkManager에 예약한 작업은 실행되는 동안 여러 상태를 거친다. 작업 상태는 WorkInfo.State 값을 사용하며 다음 값 중 하나에 해당된다.

 

상태 설명
ENQUEUED 예약됨
RUNNING 현재 실행 중
SUCCEEDED 작업 성공
FAILED 작업 실패
CANCELLED 작업 취소
BLOCKED 이전 작업이 완료되지 않아 차단됨

 

일회성 작업의 상태 변화

일회성 작업의 상태는 ENQUEUED에서 시작한다. 실행되면 RUNNING 상태로 이동하고 결과에 따라 SUCCEEDED 또는 FAILED 상태로 끝난다. 아무 시점에서나 작업을 취소할 수 있으며 취소하면 CANCELLED 상태로 끝난다. SUCCEEDED, FAILED, CANCELLED는 일회성 작업의 최종 상태로 이 중 하나에 해당하면 WorkInfo.State#isFinished()true를 반환한다.

일회성 작업의 상태 변화 다이어그램

 

주기성 작업의 상태 변화

주기적으로 실행되는 작업의 상태 또한 ENQUEUED에서 시작하여 실행되면 RUNNING 상태로 이동한다. 작업은 언제든 취소할 수 있으며 취소되면 CANCELLED 상태로 끝난다.

 

하지만 주기성 작업은 종료되지 않기 때문에 CANCELLED가 유일한 최종 상태다. 그리고 반복적으로 실행되어야 하므로 끝나면 결과에 상관 없이 ENQUEUED 상태로 돌아간다.

 

다시 말해, ENQUEUED와 RUNNING을 번갈아서 변화하다가 작업을 취소하면 CANCELLED 상태로 종료된다.

주기적 작업의 상태 변화 다이어그램

'Android' 카테고리의 다른 글

WorkManager (4) : 작업 체이닝  (0) 2022.12.10
WorkManager (3) : 작업 관리하기  (0) 2022.12.05
WorkManager (1) : 작업 설정/예약하기  (0) 2022.12.02
DataStore  (0) 2022.11.30
Lifecycle  (0) 2022.11.11