백그라운드 위치 사용은 배터리 수명에 상당한 영향을 미칠 수 있습니다. Android는 백그라운드 위치 수집 제한을 지원하므로 개발자는 배터리 효율성을 높이기 위해 애플리케이션을 최적화할 수 있습니다. 이러한 최적화는 실행 중인 Android 버전에 관계없이 모든 기기에 유용합니다.
백그라운드 위치 제한을 사용하면 다음과 같은 이점이 있습니다.
- 백그라운드 위치 수집이 제한되고 위치가 연산되어 1시간에 몇 번만 전달됩니다.
- Wi-Fi 검색은 그 빈도가 더욱 적고, 기기가 동일한 고정 액세스 포인트에 연결되어 있을 때는 위치 업데이트가 연산되지 않습니다.
- 지오펜싱 응답은 몇십 초에서 약 2분 간격으로 변경됩니다. 이번 변경으로 배터리 성능이 개선되었습니다. 일부 기기의 경우, 배터리 성능이 10배까지 향상되기도 합니다.
필수 지식
이 문서에서는 다음 API에 익숙하다고 가정합니다.
- Google 위치 서비스 이러한 API는 프레임워크 위치 API보다 정확성이 높고 배터리 부담이 적습니다.
- 통합 위치 정보 제공자 이 API는 GPS, Wi-Fi, 모바일 네트워크의 신호와 가속도계, 자이로스코프, 자기계, 기타 센서를 결합합니다.
- Geofencing: 이 API는 Fused Location Provider API 위에 빌드되며 배터리 성능에 최적화되어 있습니다.
배터리 소모에 관한 이해
위치 정보 수집과 배터리 소모는 다음과 같이 관련이 있습니다.
- 정확성: 위치 데이터의 정밀도입니다. 일반적으로 정확성이 높을수록 배터리 소모가 큽니다.
- 빈도: 위치가 계산되는 빈도입니다. 위치 연산 빈도가 높을수록 배터리를 더 많이 사용합니다.
- 지연 시간: 위치 데이터가 전달되는 속도입니다. 일반적으로 지연 시간이 적을수록 더 많은 배터리가 필요합니다.
정확성
setPriority() 메서드를 사용하여 다음 값 중 하나를 인수로 전달하면 위치 정확성을 지정할 수 있습니다.
PRIORITY_HIGH_ACCURACY는 가장 정확한 위치를 제공합니다. 위치 정보는 필요에 따라 여러 가지 입력값을 사용하여 연산되는데 (GPS, Wi-Fi, 셀을 사용 설정하고 여러 종류의 센서 사용), 배터리를 상당히 소모할 수 있습니다.PRIORITY_BALANCED_POWER_ACCURACY는 전력 사용을 최적화하면서도 정확한 위치를 제공합니다. GPS는 거의 사용하지 않습니다. 일반적으로 Wi-Fi와 셀 정보를 결합하여 기기 위치를 계산합니다.PRIORITY_LOW_POWER는 대체로 휴대폰 기지국을 사용하고 GPS와 Wi-Fi 입력값은 사용하지 않기 때문에 배터리를 최소한으로 사용하는 대략적인 (도시 수준) 정확성을 제공합니다.PRIORITY_NO_POWER는 다른 앱에서 이미 연산되어 있는 위치 정보를 수동적으로 수신합니다.
균형 잡힌 전력 사용 또는 절전 옵션을 사용하여 대부분 앱의 위치 정보 요구사항을 충족합니다. 포그라운드에서 실행되고 실시간 위치 업데이트가 필요한 앱 (예: 매핑 앱)에만 높은 정확성을 사용해야 합니다.
실행 빈도
위치 빈도는 두 가지 메서드로 지정할 수 있습니다.
setIntervalMillis()메서드를 사용하여 앱의 위치를 계산하는 간격을 지정합니다.setMinUpdateIntervalMillis()메서드를 사용하여 다른 앱의 위치를 수신하는 간격을 지정합니다.
setIntervalMillis()을 사용할 때는 최대한 큰 값을 전달합니다. 이는 특히 배터리를 소모하는 백그라운드 위치 수집에 중요합니다. 포그라운드 사용 사례에는 몇 초 간격을 예약합니다.
Android 8.0 (API 수준 26)에 도입된 백그라운드 위치 제한은 이러한 전략을 적용하지만, Android 7.0 (API 수준 24) 이하를 실행하는 기기에도 이 전략을 적용하고자 노력해야 합니다.
지연 시간
setMaxUpdateDelayMillis() 메서드를 사용하여 지연 시간을 지정할 수 있습니다. 일반적으로 setIntervalMillis() 메서드에 지정된 간격보다 몇 배 큰 값을 전달합니다. 이 설정은 위치 정보 전달을 지연하고 여러 위치 업데이트를 일괄 전달할 수 있습니다.
이 두 가지 변경사항은 배터리 소모를 최소화하는 데 도움이 됩니다.
앱에 위치 업데이트가 즉시 필요하지 않은 경우 setMaxUpdateDelayMillis() 메서드에 최대한 큰 값을 전달하여 지연 시간을 늘리는 대신 더 많은 데이터를 제공하고 배터리 효율을 높여야 합니다.
지오펜싱을 사용할 경우 앱은 setNotificationResponsiveness() 메서드에 큰 값을 전달하여 전력을 절약해야 합니다. 5분 이상의 값을 사용하는 것이 좋습니다.
추가 자료
자세한 내용은 다음 문서를 참고하세요.
- 권장사항: 이 가이드에서는 앱이 배터리 수명에 미치는 영향을 개선하는 데 사용할 수 있는 구체적인 권장 조치를 설명합니다.
- 사용 사례: 이 가이드에서는 위치 서비스를 사용할 수 있는 몇 가지 일반적인 사용 사례와 이러한 사례에서 배터리 수명에 미치는 영향을 최적화하는 방법을 제공합니다.