it-swarm.com.de

Entlädt meine Android-App den Akku?

Ich entwickle ein Spiel für Android. Es verwendet eine Oberflächenansicht und verwendet die üblichen 2D-APIs zum Zeichnen. Als ich das Spiel zum ersten Mal veröffentlichte, machte ich allerlei Dummheiten, wie das Neupunktieren von 9 Patches in jedem Frame und ebenfalls mit Text. Ich habe seitdem vieles davon optimiert, indem ich Bitmap-Objekte zeichnete und sie jeden Frame zeichne. Nur bei Bedarf erneut auf die Bitmap-Objekte zeichnen. 

Ich habe bereits Beschwerden über die Batterieentladung erhalten. Nach meinen Änderungen möchte ich (wissenschaftlich) wissen, ob ich Verbesserungen vorgenommen habe. Leider liegen mir keine früheren Daten vor, daher wäre es sehr nützlich, die Leistung mit einem anderen Spiel zu vergleichen.

Ich habe Traceview ausgeführt und die Ergebnisse daraus hauptsächlich zur Ermittlung von CPU-zeitaufwändigen Methoden verwendet. 

Also - Wie kann ich die Akkuleistung meiner App am besten bestimmen und was ist ein guter Benchmark?

Ich weiß, dass ich die% s verschiedener Apps durch die Einstellungen betrachten kann, aber dies ist wiederum unwissenschaftlich, da die Zahl, die ich daraus erhalte, auch davon abhängt, was in allen anderen Apps passiert. Ich habe (die meisten) von Googles Dokumentation durchgesehen, und obwohl die Nachricht klar ist, dass Sie (sollten Batterie einsparen müssen (und es gelegentlich einen Tipp gibt, wie), gibt es wenig Hinweise darauf, wie ich kann Messen Sie, wie gut meine App funktioniert. Das letzte, was ich will, sind mehr Beschwerden über den Batterieverbrauch im Android Market!

Danke im Voraus.


BEARBEITEN

Vielen Dank für all Ihre hilfreichen Ratschläge/Vorschläge. Was ich wirklich wissen möchte, ist wie ich die von Traceview kommenden Daten verwenden kann (dh: CPU-Zeit in ms, die für jeden Frame des Spiels aufgewendet wird), um die Akkunutzung zu bestimmen (falls dies überhaupt möglich ist). Wenn ich meine ursprüngliche Frage zurückblicke, kann ich sehen, dass ich etwas vage war. Danke noch einmal.

73
Tom R

Hier ist mein Vorschlag:

Ich beobachte den Stromverbrauch während der Entwicklung meiner Apps (die die Sensoren manchmal mit Raten von <25 ns abfragen) mithilfe von PowerTutor . Schauen Sie sich das an, es klingt vielleicht nach dem, wonach Sie suchen. Die App sagt Ihnen, was Sie in mW, J oder relativ zum Rest des Systems verwenden. Außerdem werden die Ergebnisse nach CPU, WLAN, Anzeige (andere installierte Funkgeräte) aufgegliedert. Der einzige Haken ist, dass es für ein bestimmtes Telefonmodell geschrieben wurde, aber ich verwende es mit großem Erfolg bei meinem EVO 4G, dem Galaxy S (Sprint Epic) und dem Hero. 

Viel Glück, - Steve

41
Kingsolmn

Es besteht die Möglichkeit, dass Ihr Spiel die Batterie erschöpft. Ich glaube, das hängt von mehreren Gründen ab, die wie folgt lauten:

  • Ihre Bewerbung ist ein game. Spiele entladen den Akku schnell.
  • Sie sind iterating mit Hilfe einer Thread. Haben Sie die FPS so begrenzt, dass die CPU unnötige Iterationen überspringt? Da Sie mit 2D arbeiten, gehe ich davon aus, dass Sie die SurfaceView verwenden. 60 FPS werden für ein Echtzeitspiel ausreichen.
  • Sie sind nicht stop die Thread, wenn Ihre Anwendung beendet wird. Daher wiederholen Sie den Code, wenn Ihre Anwendung nicht aktiv ist.
  • Haben Sie eine iterate-Sperre, die wait(); während onPause ausführt?

Die Leute, die kommentieren, dass Ihr Spiel Batterie verliert, zielen wahrscheinlich darauf ab, wenn Ihre Anwendung nicht verwendet wird. Ansonsten wäre es seltsam, weil jedes Spiel im Android Market die Batterie erschöpft - mehr oder weniger.

20
Wroclai

Wenn Sie versuchen, die "Verbesserung gegenüber Ihrer vorherigen Version" einzuschätzen, ist es meines Erachtens nicht sinnvoll, mit einem anderen Spiel zu vergleichen! Wenn diese beiden Spiele nicht genau das tun, ist dies so unwissenschaftlich wie es nur geht.

Stattdessen würde ich die vorherige Version Ihrer App aus der Quellcodeverwaltung herausholen, ausführen, messen und dann mit dem neuesten Code ausführen und erneut vergleichen.

Zum Vergleich können Sie beispielsweise das Befehlszeilentool "top" verwenden (definitiv in busybox verfügbar, wenn Ihr Telefon verwurzelt ist und nicht sicher ist, ob es mit einem Standardtelefon geliefert wird. Wahrscheinlich nicht). Das zeigt Ihnen die prozentuale CPU-Auslastung Ihres Prozesses.

6
EboMike

Es gibt einen von Qualcomm entwickelten Batterieprofiler namens Trepn Profiler: https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler

4
Murat

wie kann ich die von Traceview kommenden Daten verwenden (z. B.: CPU-Zeit in ms, die für jeden Frame des Spiels aufgewendet wurde), um den Batterieverbrauch zu ermitteln (sofern dies überhaupt möglich ist)

Theoretisch ist es möglich, den Batterieverbrauch für Ihre App zu extrapolieren, indem Sie den Stromverbrauch Frame für Frame betrachten. Der beste Weg, dies zu erreichen, besteht darin, den Stromverbrauch der CPU (nur) für einen bestimmten Zeitraum (z. B. zwei Sekunden) zu bewerten, während Ihre App den CPU-intensivsten Betrieb ausführt (zusätzlich kann der Stromverbrauch der GPU auf diese Weise ermittelt werden Außerdem) während der Aufzeichnung von TraceView-Daten (z. B. Frames pro Sekunde oder Flops pro Sekunde) der Datenverkehr über die CPU/GPU für eine gegebene Millisekunde. Mithilfe dieser Daten können Sie den durchschnittlichen Spitzenleistungsverbrauch Ihrer App genau berechnen, indem Sie den obigen Test einige Male ausführen.

Deshalb sage ich, dass es nur Theorie ist: Es gibt viele zu berücksichtigende Variablen:

  1. Anzahl und Art der anderen Prozesse, die zum Zeitpunkt des obigen Tests ausgeführt wurden (prozessorintensiv)
  2. Methode zur Bewertung des Stromverbrauchs über die CPU/GPU (während Tools wie PowerTutor für die Bewertung des Stromverbrauchs effektiv sind, wäre die Bewertung in diesem Fall nicht so effektiv, da zeitgestempelte Stromverbrauchsdaten erfasst werden müssen) Jede Methode zur Erfassung von Leistungsdaten würde einen zusätzlichen Overhead ( Schrödingers Katze ) verursachen, der jedoch streng von der Genauigkeit abhängt, die Sie benötigen/wünschen.)
  3. Der Grund für die Informationen zum Stromverbrauch - Wenn Sie den Stromverbrauch Ihrer App zu Test- oder BETA-Test-/Evaluierungszwecken definieren möchten, ist dies eine machbare Aufgabe mit einiger Entschlossenheit und den richtigen Tools. Wenn Sie nach nutzbaren Informationen über den Stromverbrauch "in freier Wildbahn" auf den Geräten der Benutzer suchen, würde ich sagen, dass dies plausibel, aber nicht realistisch ist. Die beteiligten Flugzeuge würden selbst den entschlossensten und engagiertesten Forscher in Ohnmacht fallen lassen. Sie müssten jede mögliche Kombination von Geräte-/Android-Version in der Wildnis testen. Darüber hinaus sind die Kombinationen aus laufenden Prozessen/Threads und installierten Apps wahrscheinlich unberechenbar. 

Ich hoffe, dies gibt einen Einblick in Ihre Frage, auch wenn ich tiefer als nötig hineingegangen bin.

-Steve

2
Kingsolmn

Eine äußerst nützliche Ressource ist die kostenlose App von AT & T mit dem Namen ARO.

Schau es dir mal an: ARO

Es hat mir schon früher geholfen und ich sehe es nicht oft, dass es erwähnt wird.

2
AllDayAmazing

Ich weiß, dass diese Frage alt und spät ist, aber für jeden, der nach einer Lösung sucht, schlage ich vor, den JouleUnit-Test zu betrachten: http://dnlkntt.wordpress.com/2013/09/28/Wie testet man den Energieverbrauch auf Android-Geräten/

Es ist in Eclipse integriert und bietet Ihnen eine Menge Details darüber, wie viel Akku Ihre App verbraucht.

0
brunorey

Ich kenne drei Möglichkeiten, die Ihnen bei einer wissenschaftlichen Maßnahme helfen können:

  1. Verwenden Sie eine speziell dafür entwickelte Hardware. Monsun-HOCHSPANNUNGS-MONITOR . https://msoon.github.io/powermonitor/PowerTool/doc/Power%20Monitor%20Manual.pdf
  2. Laden Sie Trepn Profiler (ein Werkzeug von Qualcomm) auf Ihr Telefon herunter und installieren Sie es. Sie benötigen keinen Computer für die Berichterstellung. Berichte sind live und in Echtzeit am Telefon. Sie können Trepn Profiler über den folgenden Link herunterladen: https://play.google.com/store/apps/details?id=com.quicinc.trepn&hl=de_DE

Bitte beachten Sie, dass das aktuelle Telefon (mit Android 6+) im Schätzmodus funktioniert. Wenn Sie genaue Zahlen benötigen, müssen Sie eine Liste der ausgewählten Geräte anzeigen. Überprüfen Sie den folgenden Link auf die Liste: https://developer.qualcomm.com/software/trepn-power-profiler/faq Sie können Apps separat und das gesamte System profilieren.

  1. Verwenden Sie Batteriestate und Battery Historian von Google. https://developer.Android.com/studio/profile/battery-historian
0
Paiman Roointan

"Ich weiß, ich kann die% s von Verschiedenen Apps durch die Einstellungen betrachten, Aber dies ist wieder unwissenschaftlich, da die Zahl, die ich davon bekomme, auch von Abhängt, was in allem passiert die anderen apps. "

Das erste, was ich tun würde, ist die Suche nach einer App, die bereits über eine bekannte, konsistente Batterie verfügt, und dann können Sie diese einfach als Referenz verwenden, um die Nutzung Ihrer App zu ermitteln.

Wenn es keine solche App gibt, müssen Sie auf eine Antwort von einer anderen Person hoffen ... und wenn Sie eine solche App erfolgreich erstellen, würde ich vorschlagen, Ihre neue App "Battery usage reference" zu verkaufen, damit andere Programmierer sie verwenden können . :)

0
TimFoolery