Doze 모드란?
Android는 Android 6.0(API 레벨 23)부터 추가된 기능으로 기기를 오랫동안 사용하지 않는 경우 앱의 백그라운드 CPU 및 네트워크 활동을 지연시켜 배터리 소모를 줄여주는 모드입니다.
사용자가 전원을 충전하지 않고 화면이 꺼진 채로 기기를 일정 기간 정지 상태로 두면 기기는 Doze 모드를 시작하게 됩니다.
Doze 모드에서는 앱이 네트워크를 사용하고 대기 중인 활동을 처리할 수 있는 유지보수 기간을 반복적으로 제공하고
시간이 지날수록 시스템은 유지보수 기간의 횟수를 줄입니다.
사용자가 기기를 움직이거나 화면을 켜거나 충전기를 연결하여 기기 절전 모드를 해제하면 시스템은 Doze 모드를 종료하고 모든 앱은 정상적인 활동으로 돌아갑니다.
Doze 모드에서의 제한사항
-
네트워크 액세스가 정지됩니다.
-
시스템에서 wake lock을 무시합니다.
-
표준 AlarmManager 알람이 다음 유지보수 기간까지 지연됩니다.
-
Doze 모드에서도 실행되는 알람을 설정해야 하는 경우 setAndAllowWhileIdle() 또는 setExactAndAllowWhileIdle()를 사용합니다.
-
setAlarmClock()로 설정된 알람은 정상적으로 실행됩니다. 시스템에서 해당 알람이 실행되기 직전에 Doze 모드를 종료합니다.
-
-
시스템에서 Wi-Fi 검색을 수행하지 않습니다.
-
시스템에서 동기화 어댑터 실행을 허용하지 않습니다.
-
시스템에서 JobScheduler 실행을 허용하지 않습니다.
앱에서 네트워크, 알람, 작업 및 동기화를 관리하는 방법을 최적화해야 하는 경우
알람 예약을 지원하기 위해 Android 6.0(API 레벨 23)에서는 두 가지 새로운 AlarmManager 메서드 setAndAllowWhileIdle() 및 setExactAndAllowWhileIdle()를 이용하여 기기가 Doze 모드인 경우에도 알람이 실행되도록 설정할 수 있습니다.
기기가 Doze 모드 상태일 때 앱과 네트워크 상호작용을 위해서는 영구적 네트워크 연결을 유지보수하지 말고 가능한 한 FCM을 사용할 것을 권장하고 있습니다.
기타 방법으로는 사용자는 설정 > 배터리 > 배터리 최적화에서 허용 목록을 수동으로 구성할 수 있습니다.
참고자료: https://developer.android.com/training/monitoring-device-state/doze-standby
'모바일 프로그래밍 > 안드로이드' 카테고리의 다른 글
[Android] RecyclerView 의 scrollToPosition 하단(오른쪽)기준으로 변경하기 (0) | 2019.12.20 |
---|---|
[Android] RecyclerView 가변높이 지정하기 (0) | 2019.12.20 |
DialogFragment 에서 초기화 지연(by lazy) 사용 시 발생한 버그 (0) | 2019.06.17 |
java.lang.IllegalStateException: Fragment already added: DialogFragment (0) | 2019.06.12 |
RecyclerView의 scrollToPosition나 smoothScrollToPosition 사용 시 Item사이의 margin이 있는 경우 (0) | 2019.05.10 |