WorkManager란?
WorkManager는 지속적인 작업에 권장되는 솔루션이다.
앱이 다시시작 또는 재부팅 될때 작업이 유지된다 (작업이 예약되있을때)
지속적인 작업을 통해 가장 잘 처리되는 백그라운드 처리 기본 API
지속적인 작업의 유형
- Immediate (즉시): 즉시 시작하고 바로 완료해야하는 작업 (1회)
- OnTimeWorkRequest 및 Worker.
- 신속 처리 작업의 경우 OnTimeWorkRequest에서 SetExpendited()를 호출
- Long Running (장기 실행): 더 오래 실행될 수 있는 작업 (1회 또는 주기적, 10분 이상)
- 모든 WorkRequest 또는 Worker.Worker에서 setForeground()를 호출하여 알림을 처리
- Deferrable (지연 가능): 나중에 시작하며 주기적으로 실행될 수 있는 예약된 작업 (1회 또는 주기적)
- PeriodicWorkRequest 및 Worker
특징
- 작업 제약 조건: 작업을 실행하는 데 최적인 조건을 선언적으로 정의합니다.
- EX) 기기가 무제한 네트워크에 있을경우 -> 유후(idle) 상태 또는 배터리가 충분할때 실행
- 강력한 예약 관리
- 가변 일장 예약 기간을 통해 한번 또는 반복적으로 실행할 작업을 예약 가능
- 작업에 태그와 이름을 지정하여 고유 작업 및 대체 가능한 작업을 예약하고 작업 그룹을 함께 모니터링하거나 취소가능
- 작업은 모두 SQLite에 저장되며 기기를 재부팅해도 작업이 유지 되고 다시 예약되도록 보장
- 절전 기능을 사용하고 권장사항을 준수하므로 배터리 소모를 걱정하지 않아도 됨
- 신속 처리 작업
- 백그라우드에서 즉시 실행할 작업을 예약 가능
- 사용자에게 중요하고 몇 분 내에 완료되는 작업에 사용
- 유연한 재시도 정책
- 경우에 따라 실패하기도 하는데 지수 백오프 정책을 비롯해 유연한 재시도 정책을 제공
- 작업 체이닝
- 복잡한 관련 작업의 경우 직관적인 인터페이스를 사용하여 개별 작업을 함께 체이닝하면 순차적으로 실행할 작업과 실행할 작업을 제어 가능
- 각 작업에 대해 작업의 입력 데이터와 출력 데이터를 정의
- 작업을 함께 체이닝하면 자동으로 한 작업의 출력 데이터를 다음 작업으로 전달
- 내장 스레딩 상호 운용성
- Coroutine 및 RxJava와 원할하게 통합되며 자체 비동기 API를 연결할 수 있는 유연성을 제공
안정적인 작업에 사용하기
사용자가 화면을 벗어나 이동하거나, 앱이 종료되거나, 기기가 다시 시작되더라도 안정적으로 실행되어야 하는 작업을 대상으로 설계되었습니다.
- 백엔드 서비스에 로그 또는 분석 전송
- 주기적으로 서버와 애플리케이션 데이터를 동기화
다른 API와의 관계
- Corourines
- 지속적이지 않은 모든 비동기 작업
- 기본 스레드를 벗어나는 표준 방식이지만 앱이 종료된후에는 메모리를 남겨둠
- AlarmManager
- 알람에만 사용
- 잠자기 모드인 기기의 절전모드를 해제 (전원 및 리소스 관리 측면에선 비효율)
출처: Android 공식 문서 (https://developer.android.com/topic/libraries/architecture/workmanager)
'개발 공부 > 안드로이드' 카테고리의 다른 글
[Android] WorkManager - 2 (0) | 2022.12.23 |
---|---|
[안드로이드 공부] 기본 위젯 - PlainText와 imageView (0) | 2020.09.30 |
[안드로이드 공부] 기본 위젯 - Button과 종류 (0) | 2020.09.28 |
[안드로이드 공부] 기본 위젯 - TextView (0) | 2020.09.27 |
[안드로이드 공부] ScrollView 스크롤 뷰 (0) | 2020.09.25 |