콘텐츠로 이동

WorkManager - Overview

WorkManager는 안드로이드에서 지속적인 백그라운드 작업을 해야 할 때 사용하는 API입니다.

앱이 다시 시작되거나 시스템이 재부팅될 때 WorkManager에 작업이 예약된 채로 남아있다면 해당 작업은 사라지지 않고 유지되어 데이터가 유실되는 사고를 방지할 수 있습니다.

작업 유형

WorkManager가 처리하는 작업의 유형은 세 가지입니다:

  • 즉시: 즉시 시작하고 금방 완료되는 작업
  • 장기 실행: 긴 시간(10분 이상이 될 수도) 실행될 수 있는 작업
  • 지연: 나중에 시작하여 주기적으로 실행될 수 있는 작업
유형 주기성 액세스 방법
즉시 1회 OneTimeWorkRequestWorker
장기 실행 1회 또는 주기적 모든 WorkRequest 또는 Work. Worker에서 setFourground()를 호출하여 알림 처리
지연 가능 1회 또는 주기적 PreiodicWorkRequestWorker

특징

WorkManager는 다양한 옵션을 통해 정상 작동을 보장하는 백그라운드 시스템을 구성할 수 있습니다.

제약 조건

작업에 **'제약 조건'**을 추가할 수 있습니다.

보통 서버 통신을 백그라운드로 구현했을 때 네트워크 연결이 보장되어야 하기 때문에 네트워크 연결을 조건으로 제약하여 애초에 네트워크에 연결되어 있지 않았다면 작업이 실패하도록 합니다.

예약

앞서 설명한 작업 유형 중에 지연 가능이 있습니다. 이걸 통해서 일정 시간마다 작동하는 작업을 예약할 수 있습니다. 작업에 태그와 이름을 지정하여 고유한 작업 또는 후에 대체될 가능성이 있는 작업을 예약하고 하나의 작업 그룹으로 모니터링하거나 취소할 수도 있습니다.

예약된 작업은 내부적으로 관리되는 SQLite DB에 저장되어 기기가 재부팅되어도 기존에 예약된 작업은 사라지지 않고 다시 작동할 수 있도록 보장됩니다.

앱에 이미 DB가 있는데 어떻게 되나요?

WorkManager를 위한 workDB가 별도로 생성됩니다. 따라서 기존 DB는 수정되지 않고 별도로 존재하게 됩니다.

신속한 처리

장기적이거나 예약하는 것 외에도 즉시 실행 가능한 작업도 지원됩니다.

백그라운드에서 즉시 실행할 작업을 예약하면 시작됩니다.

실패 보정

예약된 작업은 다양한 사유로 실패할 수 있습니다. 그래서 WorkManager는 '지수 백오프 정책'이라는 다소 낯선 개념을 비롯해 유연한 재시도 정책을 제공합니다.

댓글