← 질문 목록
#387깊이 0
WorkManager는 어떤 방식으로 작업 실행을 보장하는가?
모바일
내부 SQLite 데이터베이스에 작업 정보를 영구 저장하고 시스템 상태에 따라 재스케줄링해서다.
앱: 작업 요청→WorkManager
SQLite DB에 작업 정보 영구 저장
기기: 재부팅 발생→WorkManager
시스템 브로드캐스트 수신
WorkManager→스케줄러
DB 기반으로 작업 재등록
스케줄러→앱
조건 충족 시 작업 실행
앱 프로세스가 강제 종료되거나 기기가 재부팅되어도 작업 예약 정보는 사라지지 않는다. WorkManager가 자체 데이터베이스에 작업 상태와 제약 조건을 기록해 두기 때문이다.
OS 버전과 구글 플레이 서비스 유무에 맞게 최적의 백그라운드 API를 알아서 선택한다. 배터리 절약 모드나 도즈 모드에서도 조건이 맞으면 작업을 이어나간다.
즉시 실행해야 하는 작업에는 어울리지 않는다. OS가 자원을 고려해 실행 시점을 미루므로 지연 시간이 발생한다.