새로운 안드로이드 백그라운드 작업 처리법 : WorkManager
처리해야 하는 작업의 실행 시점
- 작업을 지금 바로 실행해야 한다. (Exact Timming)
- 작업을 어떠한 조건이 맞는 원하는 시점에 실행 되어야 한다. (Deferrable)
- (전화 수신시에 실행되어야 하므로 이 경우에 속함)
처리해야 하는 작업의 길행과 완료 여부
- 작업을 처리하려고 노력하지만, 실행이 취소 될수 있고, 그에 따라 결과물이 없을 수도 있다. (Best-Effort)
- 작업을 반드시 처리하고 원하는 결과를 얻어야 한다. (Guaranteed Execution)
원하는 목표에 따라 백그라운드 작업의 처리 방법이 나뉘어진다.
안드로이드 초기에는 백그라운드 서비스를 돌리는게 쉬웠지만, AP, 메모리, 배터리등의 하드웨어 자원 소모 문제로 안드로이드 M부터 백그라운드 작업에 제한을 걸었다.
백그라운드 작업방법
-
AlarmManager
- 안드로이드 K (킷켓, API 19) 부터 알람이 한없이 미뤄지거나 한번에 몰아서 처리되는등 이슈 발생
-
브로드캐스트 리시버
- 안드로이드 N (누가, API 24) 부터 특정 인텐트에 대한 동작 제한
- 안드로이드 O (오레오, API 26) 부터 암시적 브로드캐스트 리시버의 등록을 차단
-
JobSchedular
- 안드로이드 L (롤리팝, API 21) 부터 지원
- 부정확해진 AlarmManager의 대안으로 사용됨