전원 및 배터리 절약

전력 효율은 Wear OS에서 특히 중요합니다. Wear OS 디자인 시계의 비중이 더 크므로 짧은 상호작용을 위한 작은 폼 팩터입니다.

Wear OS 기기는 큰 휴대기기에 비해 배터리가 더 작기 때문에 배터리 소모가 더 두드러집니다. 또한 이 작업을 수행하기 위해 Wear OS 기기의 충전 속도가 훨씬 더 나을 것입니다. 사용자는 충전할 수 있고 모바일 장치를 하루 종일 다양한 간격으로 기기를 충전하기 전에 Wear OS 기기를 몸에서 분리해야 합니다.

앱의 전력 효율성을 개선하려면 다음 설계 권장사항을 따르세요.

  • 앱 디자인은 Wear OS 폼 팩터를 잘 활용해야 합니다. 그것은 모바일 앱을 직접 복사해서는 안 됩니다.
  • 기존 모바일 앱을 사용하여 특정 사용 사례를 지원하세요. 예를 들어 시계의 인터넷 및 동기화는 비용이 많이 듭니다. 인코더와 디코더가 모바일 기기가 어려운 작업을 할 수 있게 되었고 Wear OS 기기는 영향을 줄 수 있습니다.
  • 더 짧은 상호작용을 위한 사용 사례를 설계합니다.
  • 어떤 Wear OS 이벤트를 사용하고 이러한 이벤트의 빈도를 고려하세요. 발생할 수 있습니다
  • 가능하면 시계가 충전될 때까지 앱 작업을 연기합니다. 이는 특히 데이터 동기화와 같이 데이터 집약적인 작업에 적용되며 데이터베이스 구성.

    기기가 충전 중이고 Wi-Fi에 연결되어 있으면 사용자가 보고 싶어 할 만한 데이터, 이미지, 업데이트를 있습니다.

이 전원 가이드는 시스템에서 앱을 실행하는 시기와 방법을 이해하는 데 도움이 됩니다. 앱의 런타임과 배터리 소모를 제한하는 방법을 알아보세요. 방법에 대해 자세히 알아보려면 특정 동작을 수행할 때 발생합니다. 예를 들어 앱을 로드하거나 목록 - Wear OS의 Compose와 같은 성능 관련 안내를 참고하세요. 성능 가이드를 참고하세요.

시간 경과에 따른 배터리 사용량 모니터링

앱을 실행하는 Wear OS 기기의 배터리 통계를 분석하려면 개발 머신의 터미널 창에서 다음 명령어를 실행합니다.

adb shell dumpsys batterystats

GitHub의 라이브러리에는 배터리 통계 파서가 있습니다. 배터리 통계 파서 이 명령어와 함께 실행하는 것이 유용할 수 있습니다

배터리 수명에 영향을 미치는 이벤트

앱을 구체적으로 살펴보기 전에 전반적인 사항을 고려하는 것이 좋습니다. Wear OS 기기에서 전원을 소비하는 이벤트에 관한 것입니다.

다음 표는 여러 기기의 배터리 수명에 미치는 상대적인 영향을 Wear OS 앱의 일반적인 이벤트입니다. 정확한 전력 소모는 기기마다 다릅니다.

이벤트 배터리 수명에 미치는 영향 완화 방법
LTE 및 Wi-Fi를 포함한 네트워크 액세스 매우 높음 기기가 충전될 때까지 필수적이지 않은 네트워크 액세스를 연기합니다.
화면을 켜고 대화형 모드 시작 높음 사용자가 화면을 2초 이상 붙이면 안 되며 있습니다. Google Workspace를 사용하는 상시 사용 설정 대기 모드 모드라고도 합니다.
GPS 센서 액세스 높음 가능한 경우 사용자가 GPS 액세스를 요청할 때까지 기다립니다.
CPU 사용량 높게 유지 높음 소비 플로우에 관해 알아봅니다.
심박수 센서 액세스 보통 다음 시점에 프로세서의 절전 모드 해제 시간을 사용합니다. 센서 API에서 콜백을 수신(예: 건강 관리 서비스 Wear OS
블루투스를 통해 다른 기기에 액세스 보통 세션을 짧게 유지합니다.
wakelock 유지 보통 wakelock의 수동 생성 및 사용 줄이기 <ph type="x-smartling-placeholder"></ph> WorkManager

화면 켜짐 시간 최소화

Wear OS 앱에서 다음 화면 사용 원칙을 따르세요.

  • 화면 켜기 잠금: 가능하면 항상 사용하지 마세요. 테스트하려면 항상 사용 설정을 끄세요. 디스플레이를 열고 화면이 꺼지는지 확인합니다. 제한 시간을 단축할 수 있습니다
  • 애니메이션: 복잡한 애니메이션을 최소화하고 간단한 애니메이션에 집중합니다. 보다 전문적인 느낌을 줍니다. 특히 장기 실행이나 사용할 수 있습니다. 루프가 필요한 경우 루프 사이에 일시중지를 추가합니다. 적어도 애니메이션만큼은 길 수 있습니다.
  • 대기 모드에서 깨어 있는 시간: 필요한 경우 상시 사용 설정 지원(예: 피트니스 사용 사례입니다. 앱에 상시 사용 설정이 필요한 경우, 앱이 상시 사용 설정을 지원하는지 확인합니다. 기기가 대기 모드일 때는 다음을 실행합니다.

    • 기기 화면이 켜지는 비율을 줄입니다.
    • 애니메이션을 표시하지 않습니다.
    • 실행 중일 때를 제외하고 화면의 콘텐츠를 업데이트하지 않습니다. onAmbientUpdate() 콜백입니다.

CPU 사용량 최소화

Wear OS 앱에서는 다음 CPU 사용 원칙을 따르세요.

  • 짧게 사용합니다.
  • 관련 작업을 일괄 처리하여 앱 처리 시간을 극대화하세요. 님이 자리를 비웠습니다.

wakelock 최소화

대부분의 경우 앱의 절전 모드를 방해하는 작업(예: wakelocks로 사용할 수 있습니다. 예: 건강 및 피트니스 앱, 장기 운동 wakelock이 필요하지 않습니다. 콜백을 수신할 때 프로세서의 절전 모드 해제 시간 사용 센서 API에서 전송(예: Wear OS에서 건강 관리 서비스를 사용하는 경우)

wakelock을 획득해도 괜찮은 몇 가지 경우가 있습니다. 예를 들어 앱이 다음 중 하나를 실행합니다.

  • 백그라운드에서 미디어를 재생합니다.
  • WorkManager 또는 JobScheduler을 사용합니다. 시스템에는 백그라운드에서 작업을 실행할 때 사용자를 대신하여 wakelock 발생)

Battery Historian을 사용하면 긴 시간 동안 개별 일치하는 항목을 확인할 수 있습니다. wakelock 및 총 wake lock 수 및 지속 시간의 요약 있습니다. 앱에서 사용하는 wakelock의 수와 지속 시간 검사 이 정보를 계정의 대화형 사용 패턴과 앱:

  • 예기치 않은 wakelock이 있는지 확인합니다.
  • 작업 시간이 예상보다 긴 경우 작업이 네트워크 가용성과 같은 일부 종속 항목에서 차단됩니다.

앱이 비활성화되는 방식 검사

다음과 같은 주요 기기 이벤트가 발생할 때 활성 앱이 무엇을 하는지 고려합니다. 있습니다.

  • 화면이 꺼지고 기기가 대기 모드로 전환됩니다.
  • 앱이 스와이프하여 닫혔습니다.

앱 활동을 분석하려면 다음 섹션에 나와 있는 도구를 사용하세요.

에너지 프로파일러

에너지 프로파일러는 Android 스튜디오 메뉴에서 다음을 선택하여 액세스할 수 있습니다. 보기 > 도구 창 > 프로파일러:

  1. 화면이 꺼지고 기기가 시작되면 시스템 트레이스 검사 대기 모드일 수 있습니다.
  2. 계속 진행 중인 작업과 기기의 CPU 사용 수준을 찾습니다.

Perfetto

Perfetto를 사용하면 트레이스를 기록한 후 앱을 검사하여 트레이스가 있는지 확인할 수 있습니다. 화면이 꺼지거나 기기가 중지되었을 때 작업을 수행 중인 스레드가 있는지 대기 모드로 전환될 때 또는 사용자가 앱의 활동을 닫을 때.

다음과 같은 앱의 중요한 이벤트를 표시하는 맞춤 이벤트를 정의합니다. 도메인별 이벤트를 보여줍니다. 미디어 앱의 경우 여기에는 가져오기와 같은 작업이 포함됩니다. 재생 목록, 특정 미디어 항목 다운로드, 재생 시작 및 중지 있습니다. 이러한 이벤트를 정의하면 Perfetto에서 이벤트를 확인하고 타이밍을 조정할 수 있습니다.

앱의 예약된 작업 분석

WorkManager를 사용하여 예약된 작업을 사용하면 있습니다. 일부 백그라운드 작업은 주기적이어야 하지만, 작업도 실행해서는 안 됩니다. 배터리를 소모할 수 있기 때문에 배터리를 자주 또는 오랫동안 사용하지 않을 수도 있습니다.

Battery Historian을 사용하여 예약된 작업의 실행을 검사합니다. 전체 (시스템 통계 > Jobscheduler 통계) 및 앱별 (앱 통계 > 예약된 작업). 총 개수와 총 시간을 확인합니다.

  • 작업이 매우 자주 실행되는 경우 이 빈도를 줄이는 것이 좋습니다.
  • 총 실행 시간이 예상한 시간과 일치하는지, 훨씬 더 길어졌습니다.

또한 Battery Historian 그래프를 검사하고 각 JobScheduler를 확인합니다. 입력. 포인터를 특정 항목 위에 올려놓으면 Battery Historian이 실행 중인 작업의 소유자를 표시합니다. 다음을 고려하세요.

  • 앱의 경우 실행 기간이 적절해야 합니다.
  • 작업이 앱이 실행되는 동안 발생하는지 아니면 작업은 주기적 백그라운드 작업을 나타냅니다.

센서

Wear OS 기기에는 GPS와 같은 다양한 센서가 있습니다. 대부분의 경우 Wear OS의 건강 관리 서비스를 사용하는 대신 SensorManager입니다. 많은 경우 건강 관리 서비스는 데이터를 지능적으로 일괄 처리하여 배터리 성능을 개선할 수 있습니다.

앱의 센서 사용량을 분석하려면 터미널에서 다음 명령어를 실행하세요. 창을 닫습니다.

adb shell dumpsys sensorservice

이 명령어의 결과는 다음과 같습니다.

  • 현재 및 이전 센서 등록
  • 센서 구성(설정된 경우 일괄 처리 포함)
  • 최근에 샘플링된 데이터입니다.

센서 등록 취소 테스트

앱이 센서 데이터를 예상대로 더 이상 가져오지 않는지 확인하려면 다음 시나리오에 해당합니다.

  1. 앱을 스와이프하여 닫습니다.
  2. 손바닥으로 화면을 탭합니다. 이렇게 하면 화면이 꺼지거나 화면을 대기 모드로 전환합니다.

이전 섹션의 ADB 명령어를 사용하여 센서가 등록되지 않은 것으로 올바르게 표시됩니다.

데이터 영역

Data Layer API를 사용할 때는 전송마다 전력을 일정하게 사용합니다. 포함 특히, 이 API를 사용하여 데이터를 전송하는 경우, 수신하기 위해서는 앱이 깨어나야 합니다. 데이터를 얻을 수 있습니다. 따라서 이 API를 사용할 때는 보수적으로 사용해야 합니다.

Data Layer API 사용에 관한 추가 권장사항은 다음과 같습니다. 있습니다.

  • 다음을 사용하여 리스너를 설정하기 전에 앱이 활성화될 때까지 기다립니다. WearableListenerService
  • 빠른 업데이트를 구성하는 대신 상태 변경사항을 전송합니다. 이러한 상태는 변경사항을 통해 Wear OS 기기가 로컬 데이터 계산을 수행할 수 있습니다. 운동 세션이 시작되었습니다.

    UI를 업데이트하는 상태 변경사항만 전송합니다. 예를 들어 활동 화면에 '킬로미터 달리기'만 표시됨 소수점 이하 자릿수로 설정하고 보내서는 안 됩니다. 사용자가 다른 측정기를 움직일 때마다 Wear OS로 상태 변경 있습니다.

앱에서 Data Layer API 사용량을 분석하려면 터미널 창을 엽니다.

adb shell dumpsys activity service WearableService

이 명령어의 결과는 다음과 같습니다.

  • RpcService: 어떤 경로가 얼마나 자주 그리고 어떤 경로가 사용되었는지 확인할 수 있습니다. MessageClient를 사용하여 호출됩니다.
  • DataService: DataService를 사용하여 데이터 항목이 설정되는 빈도를 확인할 수 있습니다. DataClient입니다.

건강/피트니스 앱

건강/피트니스 앱을 유지관리하는 경우 건강 관리 서비스를 사용하여 최적화 앱의 센서 사용을 파악할 수 있습니다

  • ExerciseClient의 경우 Battery Historian을 사용하여 올바른 동작을 확인합니다. 표시됩니다. 앱의 절전 모드가 해제되는 빈도가 1~2분마다 ExerciseUpdate 데이터를 수신해야 합니다.
  • 종일 일반 상태 모니터링에는 다음과 같이 PassiveMonitoringClient를 사용합니다. 건강/피트니스 데이터를 모니터링하는 방법에 대한 가이드에 설명된 대로 백그라운드에 위치합니다.

카드 및 정보 표시

앱이 카드 또는 정보 표시를 지원하는 경우 다음을 따르세요. 관행:

  • 자동 새로고침을 사용 중지하거나 새로고침 빈도를 2시간으로 늘립니다. 더 오래 지속됩니다.
  • Firebase 클라우드 메시징 (FCM) 또는 적절하게 예약된 일정 사용 작업을 사용하여 데이터 업데이트를 전송합니다. 업데이트가 너무 빠르지 않게 조심하세요. 이로 인해 시스템이 다른 것보다 빠른 속도로 반복 작업을 예약할 수 있습니다. 사용자 또는 플랫폼은 해당 작업을 수행하는 데 필요한 데이터에 액세스할 수 있습니다.
  • 사용자가 자리를 비울 때 카드 또는 정보 표시 작업을 예약하지 마세요. 상호작용하지 않습니다.
  • 오프라인 우선 접근 방식을 사용합니다.
  • 기본 앱, 카드, 정보 표시에서 단일 데이터베이스를 공유합니다. 이 UI 표면 전체에서 데이터의 일관성을 유지하는 데도 도움이 됩니다.