code

내 Android 앱이 배터리를 소모합니까?

codestyles 2020. 10. 22. 08:04
반응형

내 Android 앱이 배터리를 소모합니까?


Android 용 게임을 개발 중입니다. 표면보기를 사용하고 제공된 일종의 표준 2D 도면 API를 사용합니다. 게임을 처음 출시했을 때 저는 각 프레임에 9 패치를 다시 그리는 것과 마찬가지로 텍스트로 모든 종류의 멍청한 일을하고있었습니다. 그 이후로 Bitmap 객체에 그리고 각 프레임에 그려서 필요한 경우에만 Bitmap 객체에 다시 그려서이 대부분을 최적화했습니다.

이전에 배터리 소모에 대한 불만을 접수했으며 수정 후 개선 사항이 있는지 (과학적으로) 알고 싶습니다. 안타깝게도 이전 데이터가 없기 때문에 다른 게임과 성능을 비교하는 것이 가장 유용 할 것입니다.

저는 Traceview를 실행하고 있으며 대부분 CPU 시간이 많이 소요되는 방법을 식별하기 위해 그 결과를 사용했습니다.

그렇다면 내 앱의 배터리 성능을 결정하는 가장 좋은 방법은 무엇이며 좋은 벤치 마크는 무엇입니까?

설정을 통해 다른 앱의 % s을 (를) 볼 수 있다는 것을 알고 있지만,이 값에서 얻은 수치는 다른 모든 앱에서 일어나는 일에 따라 달라지기 때문에 이것은 다시 비 과학적입니다. 나는 (대부분의) Google 문서를 검토했으며 배터리를 절약 해야 한다는 메시지가 분명하지만 (그리고 방법에 대한 가끔 팁을 제공함) 내 앱의 성능을 측정 할 수있는 방법에 대한 표시는 거의 없습니다. 실행할 수 있는. 내가 원하는 마지막 것은 안드로이드 마켓에서 더 많은 배터리 소모에 대한 불만입니다!

미리 감사드립니다.


편집하다

모든 유용한 조언 / 제안에 감사드립니다. 내가 정말로 알고 싶은 것은 Traceview에서 오는 데이터 (즉, 게임의 각 프레임에 소요 된 CPU 시간 (ms))를 사용하여 배터리 사용량을 결정할 수있는 방법입니다 (가능한 경우). 내 원래 질문을 다시 읽어 보면 조금 모호하다는 것을 알 수 있습니다. 다시 한 번 감사드립니다.


내 제안은 다음과 같습니다.

PowerTutor를 사용하여 앱을 개발하는 동안 (때로는 <25ns의 속도로 센서를 폴링하는) 전력 소비를 관찰 합니다. 확인해보세요, 당신이 찾고있는 것 같은데, 앱은 당신이 mW, J 또는 나머지 시스템과 관련하여 무엇을 사용하고 있는지 알려줍니다. 또한 결과는 CPU, WiFi, 디스플레이 (설치된 다른 라디오)별로 분류됩니다. 유일한 문제는 특정 휴대폰 모델 용으로 작성되었지만 EVO 4G, Galaxy S (Sprint Epic) 및 Hero에서 큰 성공을 거두었습니다.

행운을 빕니다,-스티브


게임이 배터리를 소모하고있을 가능성이 있습니다. 나는 이것이 다음과 같은 몇 가지 이유에 달려 있다고 생각합니다.

  • 귀하의 응용 프로그램은 게임 입니다. 게임은 배터리를 빠르게 소모합니다.
  • 당신이있어 반복 A로부터 도움 Thread. CPU가 불필요한 반복을 건너 뛰도록 FPS를 제한 했습니까? 2D로 작업하고 있으므로 SurfaceView. 실시간 게임에는 60FPS면 충분합니다.
  • 당신은하지 않습니다 중지Thread 때 응용 프로그램 종료합니다. 따라서 애플리케이션이 활성 상태가 아닐 때 코드를 반복합니다.
  • 동안 수행 하는 반복 잠금있습니까?wait();onPause

게임에서 배터리가 누출되고 있다고 언급하는 사람들은 아마도 애플리케이션을 사용하지 않을 때 겨냥 할 것입니다. 그렇지 않으면 Android 마켓의 모든 게임이 배터리를 어느 정도 소모하기 때문에 이상 할 것 입니다.


"이전 버전에 비해 개선 사항"을 측정하려는 경우 다른 게임과 비교하는 것이 합리적이지 않다고 생각합니다! 이 두 게임이 정확하게 작동하지 않는 한 이것은 비과학적인 것입니다.

대신 소스 제어에서 이전 버전의 앱을 가져 와서 실행하고 측정 한 다음 최신 코드로 실행하고 다시 비교합니다.

비교를 위해 예를 들어 "top"명령 줄 도구를 사용할 수 있습니다 (전화가 루팅 된 경우 busybox에서 확실히 사용 가능하며, 재고 전화와 함께 제공되는지 확실하지 않습니다. 아마도 그렇지 않을 것입니다). 이는 프로세스의 CPU 사용량을 백분율로 보여줍니다.


Qualcomm에서 개발 한 Trepn Profiler라는 배터리 프로파일 러가 있습니다. https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler


Traceview에서 오는 데이터 (예 : 게임의 각 프레임에 소요 된 CPU 시간 (ms))를 사용하여 배터리 사용량을 확인하는 방법 (가능한 경우)

이론적으로는 프레임 단위로 전력 소비량을 확인하여 앱의 배터리 사용량을 추정 할 수 있습니다. 이를 수행하는 가장 좋은 방법은 앱이 CPU 집약적 인 작업을 실행하는 동안 주어진 기간 (예 : 2 초) 동안 CPU의 전력 소비량을 평가하는 것입니다 (추가적으로 GPU 전력 사용량은이 방법으로 수집 할 수 있음). 또한) TraceView 데이터 (예 : 초당 프레임 또는 초당 플롭)를 기록하는 동안 CPU / GPU에서 주어진 밀리 초 동안 트래픽을 제공합니다. 이 데이터를 사용하여 위의 테스트를 몇 번 실행하여 앱의 평균 최대 전력 소비를 정확하게 계산할 수 있습니다.

이것이 이론 일 뿐이라고 말하는 이유는 다음과 같습니다. 고려해야 할 변수가 많습니다.

  1. 위 테스트시 실행중인 다른 프로세스의 수와 특성 (프로세서 집약적)
  2. CPU / GPU 전체의 전력 소비를 평가하는 방법 (PowerTutor와 같은 도구는 전력 소비를 평가하는 데 효과적이지만이 경우에는 타임 스탬프가 표시된 전력 사용 데이터를 수집해야하기 때문에 평가가 효과적이지 않습니다. 전력 데이터를 수집하는 모든 방법은 추가 오버 헤드 ( Schrödinger 's cat )를 발생 시키지만 이는 사용자가 요구 / 원하는 정확도 수준에 따라 엄격하게 좌우됩니다.)
  3. 전력 소비 정보의 이유-테스트 또는 베타 테스트 / 평가 목적으로 앱의 전력 소비를 정의하려는 경우 몇 가지 결정과 적절한 도구를 사용하여 실행 가능한 작업입니다. 사용자의 장치에서 "야생적으로"전력 소비에 대한 유용한 정보를 얻으려면 그럴듯하지만 현실적이지 않다고 말하고 싶습니다. 관련된 vairables는 가장 단호하고 헌신적 인 연구원조차도 기절하게 만들 것입니다. 야생에서 가능한 모든 장치 / Android 버전 조합을 테스트해야합니다. 또한 실행중인 프로세스 / 스레드와 설치된 앱의 조합은 계산할 수 없을 것입니다.

필요한 것보다 더 깊이 들어갔을 수도 있지만 이것이 귀하의 질문에 대한 통찰력을 제공하기를 바랍니다.

-스티브


찾는 사람에게 매우 유용한 리소스 중 하나는 ARO라는 AT & T의 무료 앱입니다.

살펴보기 : ARO

이전에는 도움이되었고 자주 언급되지 않았기 때문에 찾는 사람을 위해 여기에 놓을 것이라고 생각했습니다.


"설정을 통해 서로 다른 앱의 % s을 (를) 볼 수 있다는 것을 알고 있지만,이 수치는 다른 모든 앱에서 발생하는 상황에 따라 달라지기 때문에 이것은 다시 비 과학적입니다."

가장 먼저 할 일은 이미 알려진 일관된 배터리 사용량이있는 앱을 찾아서 앱 사용량을 확인하기위한 참조로 사용할 수 있습니다.

그런 앱이 없다면 다른 사람의 대답을 기대해야합니다. 그런 앱을 성공적으로 만들었 으면 다른 프로그래머가 사용할 수 있도록 새 "배터리 사용 참조"앱을 판매하는 것이 좋습니다. . :)


나는이 질문이 오래되었고 늦었다는 것을 알고 있지만 해결책을 찾고있는 사람이라면 JouleUnit 테스트를 살펴볼 것을 제안합니다. http://dnlkntt.wordpress.com/2013/09/28/how-to- 안드로이드 기기에서 에너지 소비 테스트 /

이클립스에 통합되어 앱이 얼마나 많은 배터리를 소비하고 있는지에 대한 많은 세부 정보를 제공합니다.


과학적 측정에 도움이되는 세 가지 옵션을 알고 있습니다.

  1. Use a hardware specifically built for this. Monsoon HIGH VOLTAGE POWER MONITOR. https://msoon.github.io/powermonitor/PowerTool/doc/Power%20Monitor%20Manual.pdf
  2. Download and install Trepn Profiler (a tools from Qualcomm) on your phone. You wont need a computer for reporting. Reports are live and realtime on the phone. You can download Trepn Profiler from the following link: https://play.google.com/store/apps/details?id=com.quicinc.trepn&hl=en_US

Please take note that for recent phone (with android 6+) it works in estimation mode. If you need accurate numbers, you need to a list of select devices. Check the following link for the list: https://developer.qualcomm.com/software/trepn-power-profiler/faq You can profile apps separately, and the whole system.

  1. Use Batterystats and Battery Historian from google. https://developer.android.com/studio/profile/battery-historian

참고URL : https://stackoverflow.com/questions/5124013/is-my-android-app-draining-battery

반응형