web-dev-qa-db-ja.com

Android App Draining Battery?

Android用のゲームを開発しています。サーフェスビューを使用し、提供される標準の2D描画APIの一種を使用します。ゲームを最初にリリースしたとき、私は各フレームで9パッチを再描画するなど、あらゆる種類の無作法なことをしていた。それ以来、ビットマップオブジェクトに描画して各フレームを描画し、必要なときにのみビットマップオブジェクトに再描画することで、この多くを最適化しました。

以前にバッテリーの消耗について苦情を受けていましたが、修正を行った後、改善したかどうか(科学的に)知りたいと思います。残念ながら、私は過去のデータを持っているわけではないので、パフォーマンスを他のゲームと比較するのが最も便利でしょう。

Traceviewを実行しており、その結果を主にCPU時間のかかるメソッドを識別する目的で使用しています。

-アプリのバッテリーパフォーマンスを判断する最良の方法は何ですか?また、優れたベンチマークは何ですか?

設定からさまざまなアプリの%sを確認できることはわかっていますが、これは非科学的です。これから得られる数値は、他のすべてのアプリで何が起こっているかにも依存します。私は(ほとんど)Googleのドキュメントを調べましたが、メッセージは明らかですが、shouldはバッテリーを節約している(そして、方法)、アプリのパフォーマンスをどのように測定できるかについてはほとんど示されていません。私が最後に欲しいのは、Android Market!

前もって感謝します。


編集

有益なアドバイスや提案をありがとう。私が本当に知りたいのはTraceviewからのデータ(つまり、ゲームの各フレームに費やされるミリ秒単位のCPU時間)を使用してバッテリー使用量を判断する方法(可能な場合) 。元の質問を読み返すと、私は少しあいまいだったことがわかります。再度、感謝します。

73
Tom R

私の提案は次のとおりです。

PowerTutor を使用して、アプリの開発中に電力消費を監視します(25ns未満の速度でセンサーをポーリングすることがあります)。それを確認してください、おそらくあなたが探しているもののように聞こえます。また、結果はCPU、WiFi、ディスプレイ(インストールされている他の無線)ごとに分類されます。唯一の難点は、特定の電話モデル向けに書かれていることですが、EVO 4G、Galaxy S(Sprint Epic)、およびHeroで大成功を収めています。

頑張って、スティーブ

41
Kingsolmn

ゲームでバッテリーが消耗している可能性があります。これは、次のようないくつかの理由に依存すると考えています。

  • あなたのアプリケーションはgameです。ゲームはバッテリーをすばやく消耗します。
  • あなたはThreadの助けを借りてiteratingです。 CPUが不要な反復をスキップするようにFPSを制限しましたか? 2Dで作業しているので、SurfaceViewを使用していると思います。リアルタイムゲームには60 FPSで十分です。
  • アプリケーションの終了時にThreadstopしません。したがって、アプリケーションが動作していないときにコードを繰り返します。
  • onPause中にwait();を行うiterate lockをお持ちですか?

あなたのゲームがバッテリーをリークしているとコメントする人々は、おそらくあなたのアプリケーションが使用されていないときに狙いを定めます。そうしないと、Android Marketはバッテリーを消耗します-より多くor少ないため、それは奇妙です。

20
Wroclai

「以前のバージョンに対する改善」を評価しようとしている場合、別のゲームと比較することは意味がないと思います!これらの2つのゲームが正確に行わない限り、これは非科学的です。

代わりに、ソース管理からアプリの以前のバージョンを取得して実行し、測定してから、最新のコードで実行して再度比較します。

比較するために、たとえばコマンドラインツール「top」を使用できます(お使いの電話がルート化されている場合、busyboxで確実に使用できます。これにより、プロセスのCPU使用率がパーセントで表示されます。

6
EboMike

Qualcommが開発したTrepn Profilerというバッテリープロファイラーがあります。 https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler

4
Murat

traceviewからのデータ(ゲームの各フレームに費やされるミリ秒単位のCPU時間)を使用して、バッテリーの使用状況を判断する方法(可能な場合)

理論的には、フレームごとに消費電力を調べることで、アプリのバッテリー使用量を推定することが可能です。これを達成する最善の方法は、アプリが最もCPUを集中的に使用する操作を実行している間に、特定の期間(たとえば2秒)のCPUの電力消費量(のみ)を評価することです(さらに、GPUの電力使用量をこの方法で収集できます)また、TraceViewデータ(1秒あたりのフレーム数や1秒あたりのフロップ数など)を記録しながら、特定のミリ秒の間、CPU/GPUを介したトラフィックを提供します。このデータを使用して、上記のテストを数回実行することで、アプリの平均ピーク消費電力を正確に計算できます。

ここに私がそれが理論のみであると言う理由があります:考慮すべき多くの変数があります:

  1. 上記のテストの時点で実行されている他のプロセスの数と性質(プロセッサを集中的に使用)
  2. CPU/GPU全体の消費電力を評価する方法(PowerTutorなどのツールは消費電力の評価に効果的ですが、この場合、タイムスタンプ付きの電力使用量データを収集する必要があるため、評価はそれほど効果的ではありません。電力データを収集する方法は、追加のオーバーヘッドを導入します( Schrödinger's cat )が、それは厳密にあなたが要求/望んでいる精度のレベルに依存します。)
  3. 消費電力情報の理由-テストまたはベータテスト/評価の目的でアプリの消費電力を定義しようとしている場合は、何らかの判断と適切なツールを備えた実行可能なタスクです。ユーザーのデバイス上で、消費電力に関する「野生の」消費電力に関する情報を取得しようとしている場合、それはもっともらしいが現実的ではないと言えます。関係する貴重品は、最も熱心で熱心な研究者でさえも気が遠くなるでしょう。野生のデバイス/ Androidバージョンのすべての可能な組み合わせでテストする必要があります。さらに、実行中のプロセス/スレッドとインストール済みアプリの組み合わせは、計り知れない可能性があります。

必要以上に深く掘り下げていたかもしれませんが、これがあなたの質問に何らかの洞察を提供することを望みます。

-スティーブ

2
Kingsolmn

探している人にとって、私たちが非常に役立つリソースの1つは、AROと呼ばれるAT&Tの無料アプリです。

見てみましょう: [〜#〜] aro [〜#〜]

それは私を前に助けました、そして、私はそれがあまり頻繁に言及されないので、探している人のためにここにそれを落とすと思いました。

2
AllDayAmazing

私はこの質問が古くて遅いことを知っていますが、解決策を探してここに来る人は、JouleUnitテストをご覧になることをお勧めします: http://dnlkntt.wordpress.com/2013/09/28/ how-to-test-energy-consumption-on-Android-devices /

Eclipseに統合され、アプリが消費しているバッテリーの量に関する詳細を提供します。

0
brunorey

科学的手段を持つために役立つ3つのオプションを知っています。

  1. このために特別に構築されたハードウェアを使用してください。モンスーン高電圧モニター。 https://msoon.github.io/powermonitor/PowerTool/doc/Power%20Monitor%20Manual.pdf
  2. Trepn Profiler(Qualcommのツール)を電話にダウンロードしてインストールします。レポートにコンピューターは必要ありません。レポートは電話でリアルタイムにリアルタイムに表示されます。 Trepn Profilerは、次のリンクからダウンロードできます。 https://play.google.com/store/apps/details?id=com.quicinc.trepn&hl=en_US

最近の携帯電話(Android 6+)の場合、推定モードで動作します。正確な番号が必要な場合は、選択したデバイスのリストが必要です。リストについては、次のリンクを確認してください。 : https://developer.qualcomm.com/software/trepn-power-profiler/faq アプリとシステム全体のプロファイルを個別に作成できます。

  1. GoogleのBatterystatsとBattery Historianを使用します。 https://developer.Android.com/studio/profile/battery-historian
0
Paiman Roointan

「設定を通じてさまざまなアプリの%sを確認できることはわかっていますが、これは非科学的です。これから得られる数値は、他のすべてのアプリで何が起こっているかにも依存します。」

私が最初に行うことは、既知の一貫したバッテリー使用量のある既存のアプリを探し出し、それをアプリの使用状況を判断するための参照として使用することです。

そのようなアプリがない場合、他の誰かからの回答を期待する必要があります...そしてそのようなアプリの作成に成功した場合、他のプログラマーが使用できるように新しい「バッテリー使用リファレンス」アプリを販売することをお勧めします。 :)

0
TimFoolery