블로그명..?

[JetPack] WorkManager 본문

Android/JetPack

[JetPack] WorkManager

bs_choi 2021. 11. 14. 16:31

WorkManager?

WorkManager는 앱이 종료되거나 재시작되어도 신뢰가능한 비동기 작업을 쉽게 예약할 수 있게 도와주는 API이다.

FirebaseJobDispatcher, GcmNetworkManager, Job Scheduler 등의 이전 스케줄링 API들의 대안으로 적합하다.

WorkManager는 API 버전 14와 역호환 되는 이전 스케줄링 API들의 특징들을 통합하고 배터리 수명의 지속에도 도움을 줄 수 있다.

 

 

 

특징

  • 작업 제약 조건
    • 네트워크 상태에 따라 작업 제약 조건을 선언할 수 있다. (예를 들어, Wi-fi 상태일 경우 또는 Device가 대기 상태일 경우 또는 어느정도의 저장 공간을 가지고 있는지. 등등)
  • 강력한 작업 예약
    • WorkManager는 유연한 스케줄링 작업창을 통해 일회성 또는 반복적인 작업을 예약할 수 있게 도와준다.
    • 예약된 작업은 내부적으로 관리되는 SQLite DB에 저장되며, WorkManager가 이 작업이 지속되고 장비가 재시동될 경우 재예약되도록 보장한다.
    • WorkManager는 잠자기 모드와 저전력 모드 같은 정책을 준수한다.
  • 유연한 재시도 정책
    • 가끔 작업이 실패해도 WorkManager는 지수 백오프 정책을 비롯한 유연한 재시도 정책들을 제공한다.
  • 작업 체이닝
    • 복잡한 관계의 작업에서 개별적으로 동작하는 작업들을 인터페이스를 이용하여 체이닝할 수 있다.
    • 인터페이스는 각 작업들이 순차적이거나 병렬적으로 동작할 수 있게 도와준다.
    • WorkManager.getInstance(...)
          .beginWith(listOf(workA,workB))
          .then(workC)
          .enqueue()
    • 각 작업에 input과 output 데이터를 정의할 수 있다. 함께 동작하도록 체이닝을 할 경우, WorkManager는 자동으로 한 작업에서 다음 작업으로 자동으로 outdata를 통과 시킨다.
  • 내장된 쓰레딩 상호운용성
    • WorkManager는 RxJava 및 코루틴과 원할하게 통합되며 자체 비동 API를 연결할 수 있는 유연성을 제공한다.
    • WorkManager는 사용자가 화면을 닫거나 앱을 종료하거나 장비를 재시작하여도 확실하게 실행되어야 하는 작업을 대상으로 설계됨
      • 백엔드 서비스에 로그를 보내거나 분석을 전송한다.
      • 주기적으로 서버와 Application 데이터를 동기화한다.
    • WorkManager는 만약 앱 프로세스가 사라져도 안전하게 종료할 수 있는 진행 중인 백그라운드 작업 또는 즉시 실행해야 하는 작업을 대상으로 하지 않는다.

 

 

Comments