배터리 수명 최적화

모바일 사용자 환경에서 가장 중요한 단 한 가지 측면은 배터리 수명입니다. 전력이 바닥난 기기는 제 기능을 전혀 하지 못합니다. 따라서 앱 실행과 관련해 배터리 수명을 최대한 주의 깊게 살피는 것이 매우 중요합니다.

앱이 항상 전력을 적게 소모하도록 하기 위해 주의해야 할 중요 사항은 다음 세 가지입니다.

  • 앱을 Lazy First 상태로 만듭니다.
  • 앱의 배터리 소모를 관리할 수 있는 플랫폼 기능을 활용합니다.
  • 배터리 소모 원인을 파악할 수 있는 도구를 사용합니다.

Lazy First

앱을 Lazy First 상태로 만드는 것은 유난히 배터리 사용량이 많은 작업을 줄이고 최적화하는 방법을 찾는 것을 뜻합니다. Lazy First 설계에 도움이 되는 핵심 질문은 다음과 같습니다.

  • 줄이기: 앱에서 제거할 수 있는 중복 작업이 있나요? 예를 들어 데이터를 다시 다운로드하기 위해 무선 기능을 켜는 대신 다운로드한 데이터를 캐시할 수 있나요?
  • 연기: 앱에서 작업을 즉시 실행해야 하나요? 예를 들어 기기가 충전될 때까지 기다렸다가 데이터를 클라우드에 백업할 수 있나요?
  • 병합: 기기를 여러 차례 활성 상태로 전환하는 대신 작업을 일괄 처리할 수 있나요? 예를 들어 수십 개의 앱이 메시지를 보낼 때마다 각자 무선 기능을 켜야 하나요? 그 대신 무선을 한 번만 켜서 메시지를 전송할 수 있나요?

CPU, 무선, 화면 사용과 관련해 이러한 질문을 해야 합니다. Lazy First 설계는 이같은 배터리 낭비 요인을 억제하는 좋은 방법입니다.

이러한 작업 효율성을 비롯해 다양한 측면의 효율성을 높일 수 있도록 Android 플랫폼에서는 여러 가지 배터리 수명 극대화 기능을 제공합니다.

플랫폼 기능

일반적으로 Android 플랫폼에서는 앱의 배터리 사용 최적화를 지원하기 위해 두 가지 카테고리의 도움말을 제공합니다. 먼저, 앱에서 구현할 수 있는 여러 API를 제공합니다. 이러한 API에 관한 자세한 내용은 백그라운드 처리 가이드를 참조하세요.

플랫폼에는 배터리 수명 보존에 도움이 되는 내부 메커니즘도 있습니다. 프로그래밍 방식으로 구현하는 API는 아니지만 앱에서 활용할 수 있도록 이 API에 관해 알고 있어야 합니다. 자세한 내용은 다음을 참조하세요.

또한 Android 9(API 레벨 28)에서는 절전 모드를 크게 개선하였습니다. 기기 제조업체에서는 부과된 제한사항을 확인합니다. 예를 들어 AOSP 빌드에서 시스템은 다음 제한사항을 적용합니다.

  • 시스템에서는 앱이 유휴 상태가 되기를 기다리지 않고 앱을 더 적극적으로 앱 대기 모드로 전환합니다.
  • 백그라운드 실행 제한은 대상 API 수준에 관계없이 모든 앱에 적용됩니다.
  • 화면이 꺼져 있으면 위치 서비스가 사용 중지될 수 있습니다.
  • 백그라운드 앱에는 네트워크 액세스 권한이 없습니다.

전력 관리 제한사항에서 기기별 전력 최적화에 관한 세부정보를 확인하세요.

절전 모드가 작동 중일 때 앱을 테스트하는 것이 좋습니다. 기기의 설정 > 절전 모드 화면에서 절전 모드를 수동으로 사용 설정할 수 있습니다.

도구

플랫폼에 사용할 수 있는 도구로 앱에서 가장 많은 전력을 소비하는 부분을 찾아내면 이러한 기능을 더 효과적으로 활용할 수 있습니다. 타겟팅할 부분을 찾는 것만으로도 성공적인 최적화에 성큼 다가선 것입니다.

GPU 렌더링 프로파일링Battery Historian과 같은 Android 도구를 사용하면 최적화할 수 있는 영역을 찾아 배터리 수명을 늘리는 데 도움이 됩니다. 이러한 도구를 활용하여 Lazy First 원칙을 적용할 수 있는 영역을 타겟팅합니다.

기타 자료