← 질문 목록
#90깊이 0
예약한 작업은 정말 한 번만 실행되는가?
아니다. 조건이 맞은 뒤 실행되도록 영속적으로 예약하지만 재시도와 중단 때문에 Worker가 여러 번 시작될 수 있다. 외부 부수 효과는 멱등하게 만든다.
- 1. 앱에서 WorkManager로: 작업과 제약 조건을 저장한다
- 2. WorkManager에서 Worker로: 조건이 맞으면 실행한다
- 3. Worker에서 WorkManager로: 재시도를 반환하면 다시 예약한다
WorkManager는 프로세스 종료와 기기 재부팅 뒤에도 작업을 다시 예약한다. 다만 정확한 시작 시각은 보장하지 않는다.
성공은 완료로 끝난다. 일회성 작업은 실패하면 거기서 끝나지만 주기 작업은 다음 주기에 다시 돈다. 재시도는 백오프 뒤 다시 돈다. 실행 중 제약이 깨지면 작업이 중지되고 다시 시도될 수 있다.
고유 작업은 중복 예약을 줄인다. 서버 요청에는 멱등성 키를 넣고 로컬 갱신은 트랜잭션으로 묶어 실행 중단에도 결과를 일관되게 만든다.