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