* 출처
: https://woovictory.github.io/2019/05/12/Android-Background-Policy/
[Android] 버전별 백그라운드 정책
백그라운드 작업이 필요한데, 그 전에 구글에서 제한하고 있는 백그라운드 작업에 대해서 알아보려고 한다.
1. 버전별 백그라운드 정책 변천사
안드로이드는 큰 업데이트마다 배터리를 관리하기 위한 여러 기능들을 포함해왔다. 아래의 내용을 확인해보자.
- 롤리팝 5.0 : Job Scheduler의 등장. 작업을 미루거나 스케쥴링 할 수 있도록 함.
- 마시멜로우 6.0 : 도즈 모드 및 앱 대기모드 등장.
- 디바이스 또는 앱이 장시간 사용중이 아닐 때 즉, 화면이 꺼지고 충전중이 아닐 때, 네트워크의 접근을 제한하고 백그라운드 작업을 유예하기 시작.
- 디바이스 또는 앱이 장시간 사용중이 아닐 때 즉, 화면이 꺼지고 충전중이 아닐 때, 네트워크의 접근을 제한하고 백그라운드 작업을 유예하기 시작.
- 누가 7.0 : 개선된 도즈모드
- 화면이 꺼지고 움직이지 않을 때 도즈모드의 하위 제약 조건이 적용되기 시작.
- 화면이 꺼지고 움직이지 않을 때 도즈모드의 하위 제약 조건이 적용되기 시작.
- 오레오 8.0 : 백그라운드 제약
- 백그라운드 서비스와 위치 갱신을 제약하기 시작.
- 백그라운드 서비스와 위치 갱신을 제약하기 시작.
- 파이 9.0 : 앱 대기 버킷, 배터리 세이버 개선.
Oreo 버전 이상을 대상으로 업데이트 할 때 아래의 체크리스트를 확인하여 백그라운드 작업을 설정할 수 있다.
현재 사용하고 있는 방법 | 오레오 이상에서 사용해야 하는 방법 |
---|---|
JobScheduler | JobScheduler |
Firebase JobDispatcher | Firebase JobDispatcher |
Background Service | JobScheduler |
Foreground Service | Foreground Service와 해당 서비스를 종료해야 할 액션(stopService) |
WorkManager 라이브러리가 현재는 Alpha 단계이기 때문에 위의 방법들로 개발해야 하지만 정식 버전이 출시된다면 거의 모든 경우를 WorkManager
로 해결할 수 있을 것 같다. 기대해보자~
2. 올바른 앱을 만드는 전략
- 백그라운드에서 수행하는 작업은 지연 가능할만한 작업들로 만든다.
- Foreground Service를 사용할 때는 노티피케이션을 반드시 제공하여 사용자가 서비스를 중지할 수 있도록 한다.
- 알람, 네트워크 및 FCM 메시지와 같은 OS 기반의 작업에서는 이와 관련된 전원 관리 제한사항에 대한 문서 내용을 확인해보자.
참고
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] Android 앱의 크기를 줄이는 10가지 방법 (0) | 2019.09.09 |
---|---|
[펌] Android App Bundle로 aab 첫 등록 방법 (0) | 2019.05.27 |
[펌] DataBinding을 사용시 TextView의 텍스트가 변경되지 않는 경우 (0) | 2019.03.18 |
[펌] 안드로이드 앱이 동작하는 폼 팩터(Form Factor) 확인 방법 (0) | 2019.02.08 |
[펌] Android FCM Data와 Notification / [Android] FCM Background Push 이슈 대응 방법 (0) | 2019.01.31 |