개복치개발자 강의는 아래의 링크에서 확인할 수 있습니다.
이번에는 WorkManager에 관한 설명입니다.
사용방법은 구글 문서를 볼 수 있으니깐, 이걸 왜 쓰는지부터 알고 가겠습니다.
구글에서는 어떻게 설명하고 있나 공식문서부터 보겠습니다.
WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 가장 잘 처리되므로 WorkManager는 백그라운드 처리에 권장하는 기본 API입니다.
강력한 예약 관리
WorkManager를 사용하면 가변 일정 예약 기간을 통해 한 번 또는 반복적으로 실행할 작업을 예약할 수 있습니다. 작업에 태그 및 이름을 지정하여 고유 작업 및 대체 가능한 작업을 예약하고 작업 그룹을 함께 모니터링하거나 취소할 수 있습니다.
예약된 작업은 내부적으로 관리되는 SQLite 데이터베이스에 저장되며 WorkManager에서 기기를 재부팅해도 작업이 유지되고 다시 예약되도록 보장합니다.
또한 WorkManager는 절전 기능을 사용하고 권장사항(예: 잠자기 모드)을 준수하므로 배터리 소모를 걱정하지 않아도 됩니다.
또한 아래와 같이 설명하고 있습니다.
WorkManager란?
WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위한 아키텍처 구성요소로서 Android Jetpack의 일부입니다. 상황별 실행을 적용하면 WorkManager가 최대한 빨리 백그라운드 작업을 실행합니다. 보장된 실행을 적용하면 WorkManager가 사용자가 앱을 벗어난 경우를 비롯한 다양한 상황에서 로직을 처리하여 작업을 시작합니다.
WorkManager는 매우 유연한 라이브러리로, 이외에도 다음과 같은 다양한 이점이 있습니다.
- 비동기 일회성 작업과 주기적인 작업 모두 지원
- 네트워크 상태, 저장공간, 충전 상태와 같은 제약 조건 지원
- 동시 작업 실행을 포함한 복잡한 작업 요청 체이닝
- 한 작업 요청의 출력이 다음 작업 요청의 입력으로 사용됨
- 하위 버전인 API 수준 14와 호환성 처리(참고 확인)
- Google Play 서비스 사용 여부와 관계없이 작동함
- 시스템 상태 권장사항 준수
- UI에 작업 요청 상태를 쉽게 표시하는 LiveData 지원
WorkManager가 적합한 작업
WorkManager 라이브러리는 사용자가 특정 화면이나 앱에서 나가더라도 완료하는 것이 좋은 작업에 적합합니다.
WorkManager는 아래와 같은 작업에 사용하는 것이 적합합니다.
- 로그 업로드
- 이미지에 필터 적용 및 이미지 저장
- 주기적으로 로컬 데이터를 네트워크와 동기화
WorkManager는 보장된 실행을 제공하지만, 모든 작업에 보장된 실행이 필요하지는 않습니다. 따라서 기본 스레드에서 모든 작업을 실행하기 위한 포괄적인 기능은 아닙니다. 어떤 작업에 WorkManager를 사용할지 자세히 알아보려면 백그라운드 처리 가이드를 참고하세요.
뭐 공식문서에는 이렇게 적혀 있는데, 제가 개인적으로 생각하기에 가장 중요한 기능 중에 하나는, 오래걸리는 작업을 할 때(네트워크 통신 및 이미지 처리) 이 앱이 계속 켜져있을 것이라고 생각할 수 없습니다.
때문에, 이런 경우를 대비하기 위해서, WorkManager를 사용한다고 생각하시면 됩니다.
- 참조
https://developer.android.com/topic/libraries/architecture/workmanager/basics
https://developer.android.com/codelabs/android-workmanager#0
'Android Jetpack' 카테고리의 다른 글
WorkManager - 3 (WorkManager + Coroutine) (0) | 2022.03.06 |
---|---|
WorkManager - 2 (WorkManager Simple Ex) (0) | 2022.03.06 |
Coroutine - 4 (Retrofit + Coroutine) (0) | 2022.03.02 |
Coroutine - 3 (Room + Coroutine) (1) | 2022.02.27 |
Coroutine - 2 (Dispatchers) (0) | 2022.02.22 |