1. 개요
안드로이드 6 부터 앱이 백그라운드에서 처리하는 작업으로 인해 소모 되는 배터리를 줄이기 위해 도즈(Doze) 와 어플대기 모드(App Standby) 정책을 추가했습니다.
안드로이드 7 부터는 세분화된 도즈 정책을 추가하였습니다.
이러한 배터리 효율 정책은 기기나 어플을 수면 상태로 만들어버리고 여러가지 제한이 발생하기 때문에 이러한 제한이 어플의 핵심 기능을 방해한다면 큰 문제가 발생하게 됩니다.
2. 도즈 (Doze)
2.1 안드로이드 6 (Marshmallow / 6.0 / API 23)
2.1.1 조건
충전기 연결이 되지 않은 배터리 동작이며, 화면이 꺼진 상태로 움직이 없는 경우가 일정 시간 이상 지속 되는 경우 진행됩니다.
2.1.2 제한
도즈가 진행되면 제한이 발생되고 도즈의 중간중간에 발생되는 maintenance window 기간에 풀리게 되고 어플들은 이 기간에 작업을 수행하게 됩니다.
- 제한 되는 항목
- 네트워크 액세스가 일시 중단 됩니다.
- Sync Adapter 실행을 허용하지 않습니다.
- Job Scheduler 실행을 허용하지 않습니다.
- Wake Lock 을 무시합니다.
- Alarm Manager 의 처리가 maintenance window 로 연기됩니다.
- 알람을 사용해야 하는 경우에는 특정 API 를 사용합니다.
- WI-FI 스캔이 수행되지 않습니다.
2.2 안드로이드 7 (Nougat / 7.0 / API 24)
안드로이드 6과 달리 움직임이 있는 경우에도 도즈가 진행됩니다.
이는 스마트폰을 주머니에 넣어놓는 상황과 유사하며 이러한 상황에서 배터리 효율을 향상 시키기 위해 새로운 도즈 종류를 추가했다고 합니다.
2.2.1 조건 1: 배터리 동작, 화면 꺼짐, 움직임 있는 경우
이 조건을 만족하는 상황에서 도즈 모드 진입 시, 안드로이드 6의 도즈 모드 항목 중 특정 항목만 제한 합니다.
Light Doze 혹은 Doze level 1 이라고 부릅니다.
- 제한 되는 항목
- 네트워크 액세스가 일시 중단 됩니다.
- Sync Adapter 실행을 허용하지 않습니다.
- Job Scheduler 실행을 허용하지 않습니다.
2.2.2 조건 2: 배터리 동작 화면 꺼짐, 움직임 없는 경우
이 경우에는 처음에는 움직이 있는 경우와 동일하게 도즈 제한 항목의 일부만 제한하다가 시간이 좀 더 경과 되면 모든 항목에 대해서 제한하게 됩니다.
Deep Doze 혹은 Doze level 2 라고 부릅니다.
안드로이드 7 에서의 Deep Doze 는 안드로이드 6 에서의 Doze 와 동일 합니다.
3. 어플 대기모드 (App Standby)
안드로이드는 6 버전 부터 어플 대기모드 정책을 추가 하였습니다.
도즈가 시스템 전체에 해당되는 배터리 최적화 정책이라면 어플 대기 모드는 각 어플마다 적용하는 방식입니다.
3.1 조건
- 아래의 경우에 속하지 않을 때 진행
- 어플을 명시적으로 실행합니다.
- 어플에서 Foreground Service 를 실행 중 입니다.
- 잠금 화면이나 알림 창에 표시되는 알림을 생성 중 입니다.
- 기기 관리 앱에 속합니다.
- 제한 되는 항목
- Sync Adapter 실행을 허용하지 않습니다.
- Job Scheduler 실행을 허용하지 않습니다.
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS을 사용하는 경우 안드로이드 플레이 스토어에서 승인을 안해주세요.
진짜 필요로하는 앱의 경우에만 승인이 가능하며 일반적으로 리젝될듯 합니다.
'Develop > Android' 카테고리의 다른 글
[Android] Foldable Phone(폴더블 폰) 접힘 여부 알아내는 법 (0) | 2020.06.23 |
---|---|
[Android] SMS 자동으로 읽어오기 (0) | 2020.05.22 |
[Android] Night Mode 지원 방법 (0) | 2020.04.07 |
[Android] 앱 업데이트 이후 실행 여부 체크하기 (0) | 2020.04.07 |
[Android] Apk signing key 와 .keystore, hash key (0) | 2020.04.06 |