Job and Lifecycle
Job
- 작업의 실행1, 대기2, 취소3, 상태 관리4와 같은 기능을 제공한다.
- CoroutineBuilder를 통해 Coroutine이 생성될 때 자동으로 생성된다.
Lifecycle
wait children
+-----+ start +--------+ complete +-------------+ finish +-----------+
| New | -----> | Active | ---------> | Completing | -------> | Completed |
+-----+ +--------+ +-------------+ +-----------+
| cancel / fail |
| +----------------+
| |
V V
+------------+ finish +-----------+
| Cancelling | --------------------------------> | Cancelled |
+------------+ +-----------+
- New: 생성 후 아직 실행되지 않는 상태. CoroutineStart를
LAZY
로 설정하면 이 상태가 된다. - Active: 실행 중인 상태. 일시 중단된 Job도 활성 상태로 간주된다.
- Completing: 작업 완료 후 자식 코루틴의 작업 완료를 기다리는 상태.
- Completed: 자신과 자식 코루틴이 모두 작업을 완료한 상태.
- Canceling: 취소 완료 후 자식 코루틴의 취소를 기다리는 상태.
- Cancelled: 자신과 자식 코루틴이 모두 취소를 완료한 상태.
1실행: start()
를 통해 생성 상태의 작업을 시작한다.
2대기: join()
을 통해 실행 중인 작업이 완료될 때까지 대기한다.
3취소: cancel()
을 통해 실행 중인 작업을 취소한다.
4상태 관리: isActive()
, isCompleted()
, isCancelled()
등.