Android는 앱별 배터리 소비량을 어떻게 계산합니까?


24

Android는 개별 하드웨어 구성 요소에서 사용하는 에너지를 어떻게 측정합니까? Android는 각 개별 프로세스에서 사용되는 에너지를 어떻게 측정합니까?


1 초에 몇 개의 명령이 수행되는지 추측합니다.
AZ_

6
@Algo : 많은 CPU를 사용하는 백그라운드 응용 프로그램은 CPU는 거의 없지만 Wi-Fi 및 GPS 및 디스플레이는 많이 사용하는 다른 응용 프로그램보다 배터리가 많이 걸리는 것으로 가정하는 것은 완전히 오도됩니다.
Lie Ryan

그렇다면 응용 프로그램이 얻은 권한 수로부터 힌트를 얻을 수 있습니다. 단지 아이디어 일뿐입니다.
AZ_

배터리 통계에서 @LieRyan, 와이파이, GPS, 블루투스 등은 배터리의 자체 "소비자"로 계산되지 않습니까?
Ryan Conrad

답변:


11

Android는 배터리 사용에 영향을 미치는 이벤트를 추적하고이 정보를 batterystats.bin 파일에 저장합니다. 몇 가지 예 :

  • 특정 brithness 설정으로 화면이 켜져있는 시간
  • 어떤 애플리케이션 (또는 Android 앱이 아닌 프로세스) 및 깨우기 잠금을 유지 한 기간 (기기가 절전 모드로 유지되지 않도록 함)
  • 프로세스 당 CPU 사용량 (Android 앱 또는 기타 프로세스)
  • 전화 신호 강도
  • GPS 사용법
  • 기타

Android는 제조업체가 기기에 포함 된 구성 정보를 기반으로 각 애플리케이션 또는 구성 요소 (예 : 화면)에서 사용하는 전력량을 계산합니다.

통계가 오해의 소지가있을 수 있으므로 모든 것이 측정되는 것은 아니지만 모든 Android 플랫폼 릴리스에서 더 좋아집니다.

다음을 사용하여 장치에서 배터리 통계를 덤프 할 수 있습니다.

adb shell dumpsys batterystats

다음은 깨우기 잠금 전력 소비에 대한 자세한 내용이있는 Diane Hackborn 의 흥미로운 게시물입니다 .

깨우기 잠금의 전력을 계산하는 방법에는 두 가지가 있습니다.

  1. 일부 칩셋에서는 깨우기 잠금을 유지하기 만하면 CPU가 완전히 잠자기 상태가되지 않아야합니다. 보고 된 배터리 사용량에서이 추가 전력 사용량은 웨이크 잠금 장치를 보유한 모든 앱에 분산됩니다.

  2. 깨우기 잠금 자체가 전원을 사용하지 않더라도 한 응용 프로그램에서 깨우기 잠금을 유지하면 다른 응용 프로그램이 달리 실행되지 않을 때 CPU를 실행할 수 있습니다. (예를 들어, 어떤 앱은 {sleep (1); 무언가를 수행;} 깨우기 잠금이 없으면 실행되지 않는 루프를 가질 수 있습니다.)이를 해결하기 위해 애플리케이션의 CPU 사용량의 절반이 비난을받습니다. 깨우기 자물쇠를 들고있는 사람들.


답을 증명하는 출처 / 참조 자료를 제공 할 수 있습니까?
diimdeep

모든 정보는이 영역에 익숙한 Google 개발자가 제공 한 Google+ 스레드 링크에서 제공됩니다.
Paweł Nadolski

1
adb shell dumpsys batterystats 또는 파일 내에서 원하는 경우 새 장치에 대한 올바른 명령은 다음과 같습니다. adb shell dumpsys batterystats> batterystats.txt
android developer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.