TOP コマンドを使用すると、次の情報を取得できました。
shell@android:/ $ top -n 1
User 31%, System 10%, IOW 0%, IRQ 0%
User 346 + Nice 10 + Sys 120 + Idle 637 + IOW 6 + IRQ 0 + SIRQ 2 = 1121
PID PR CPU% S #THR VSS RSS PCY UID Name
481 1 26% S 89 762832K 81688K fg system system_server
1699 0 5% S 27 676472K 39092K fg u0_a72 wm.cs.systemmonitor
11243 0 3% S 28 673140K 29796K bg u0_a111 com.weather.Weather
13327 2 1% S 23 680472K 35844K bg u0_a83 com.rhmsoft.fm
659 0 1% S 17 663044K 33136K bg u0_a13 android.process.media
20260 1 0% R 1 1208K 508K shell top
が整数に丸められていることがわかります。より高い精度CPU%
でプロセスを取得する方法はありますか?CPU%
-- 報奨金に関する説明 -- アレックス
質問は Android システムに関するものであり、ルート化されていないデバイスに関するものであることが望ましいです。Android は Java アプリケーション用の高度なプロファイリング手法を提供しますが、ネイティブ コード (C++) 用のツールは限られています。Android のtopコマンドを使用すると、システムで実行されているすべてのスレッド (Java スレッドと C++ スレッドの両方) の統計を表示できます。次のクエストに役立つ回答を探しています。
私のアプリは、バックグラウンドで非アクティブなときに 2% の CPU を使用しますが、それは 0.1% 未満である必要があります。を実行するtop -t
と、自分のプロセスに属する 15 のスレッドすべてで 0% になります (一部のスレッドは、メインの UI スレッドなどの Java スレッドであり、他のスレッドは JVM に接続されない pthread です)。どのスレッドがバッテリーを消費するかを推測するにはどうすればよいですか?
この予想外のアクティビティについてさらに詳しく知りたいと思います。Androidには、Java スレッド用のTraceViewなどの優れたヘルパーが用意されています。ネイティブ コード用のツールに関する洞察は高く評価されます。