WorkManager (미완)

Gunt·2021년 7월 23일
2

WorkManager?

안드로이드에는 백그라운드 작업을 위한 다양한 옵션이 있다. 그 중 WorkManager는 유연하게 하위 버전과 호환되는 라이브러리. 안드로이드에서 권장되는 작업스케줄러로, 지연 작업을 실행하도록 보장한다.

WorkManager는 *상황별 실행, *보장된 실행을 조합하여 적용해야하는 백그라운드 작업을 위한 아키텍처 구성요소로 Jetpack에 포함되어있다.

* 상황별 실행 - WorkManager가 최대한 빨리 백그라운드 작업을 실행함
* 보장된 실행 - WorkManager가 앱이 Foreground상태를 벗어난 다양한 상황에서도 로직을 처리하며 작업을 진행함

장점

  • 제약 조건에 따라 스케줄링된 작업을 수행할 수 있다.
  • 비동기 일회성 작업과 주기적인 작업을 모두 지원함
  • 네트워크 상태, 저장공간, 충전상태와 같은 제약조건을 지원함
  • 동시 작업 실행을 포함한 순차적 요청 체이닝이 가능함
  • 한 작업 요청의 출력이 다음 작업 요청의 입력으로 사용할 수 있음
  • 하위버전 호환성 처리되어있음(WorkManager는 JobScheduler, AlarmManager 등의 api위에 존재 - 사용자의 기기 API수준을 조건에 따라 사용함)
  • GooglePlay 서비스 사용 여부 관계없이 동작
  • UI 작업 요청 LiveData 지원함

어디서 쓰이지??

사용자가 특정화면이나 앱에서 나가도 완료하는 것을 의도한 작업에 적합하다.
1) 로그 업로드
2) 이미지에 필터 적용 및 이미지 저장
3) 로컬데이터를 주기적으로 네트워크에 동기화할 경우 등

두 가지 클래스로 구성

worker

  • 백그라운드에 실행하고자 하는 실제 로직 코드 정의
    : doWork() Overide함 -> Result 반환 (이 작업을 성공적으로 수행했는지 여부를 반환)

workerRequest

profile
기술에 생각 더하기

0개의 댓글