WorkManger_선정이유 - boostcampwm-2024/and04-Nature-Album GitHub Wiki

동기화 작업을 위한 백그라운드 처리

동기화 정책

  1. 특정 시간(12시 정각)에 동기화를 실행한다.
  2. WIFI 상태에서만 진행한다.
  3. 로그인 상태에서만 진행
  Service AlarmManager WorkManager
앱이 꺼져있어도 동작 X O
WIFI 상태에서만 동작 O
특정 시간에 동작 X O O

Service

  • Service는 앱이 꺼져있으면 종료되며, 유휴 상태에서 1~2분 뒤에 강제 종료되기 때문에 부적합하다.
  • Foreground도 가능하긴 하지만 동기화 정책과 부적합하기 때문에 Service는 제외

AlarmManager

  • 특정 시간에 동작 가능
  • 다만 Doze모드에서 제대로 동작하지 않으며, 동작하더라도 기기를 깨운다는 단점이 있다.
  • WIFI는 작업 실행 시 네트워크를 확인하는 방법으로 구현할 수 있을 것 같다.

WorkManager

  • 앱 실행 여부와 상관없이 작업을 수행
  • 백그라운드에서 동작
  • 다양한 상태에 따른 트리거 설정 가능
    • WIFI
    • 핸드폰 충전
    • 등등
  • DOZE 모드와 같은 절전 기능 준수
  • 특정 시간을 지정할 수 없는 단점이 있지만, 작업 지연 기능을 이용하여 특정 시간에 작업을 구현할 수 있다.
⚠️ **GitHub.com Fallback** ⚠️