Androidのタスク内容をリアルタイムに表示させてみた
タスク(Activity Stack, Activityスタック)の事は入門書とかにも載ってて概念はわかるけど、実際のスタック状況は把握しづらい。けど、リアルタイムで簡単に確認するツールが見当たらない。無いなら作ろうというわけで自作してみた。他の人ってどうやってタスク状況を把握してるんだろ?
タスク状況のリアルタイム表示するバッチファイル
aam_watch.bat
@echo off REM Android Activity Manager内のTask情報を監視 REM 要Cygwinとかのgrepとsleepコマンド :loop cls adb shell dumpsys activity | grep -A 1000 "Running activities" | grep -B 1000 "mResumedActivity" sleep 2 goto loop
動作にはWindows, Cygwinとかのgrepとsleepコマンド, Android SDKが必要。
もっとスマートな実装方法がありそうだし、たまに表示がおかしかったりするけど、とりあえず動くので公開。
実行結果
C:\> aam_watch.bat Running activities (most recent first): TaskRecord{40a2ae68 #135 A android.task.contacts} Run #3: HistoryRecord{40550840 com.google.android.gm/.ComposeActivity} Run #2: HistoryRecord{4054ba50 com.android.contacts/.ProfileLayerActivity} Run #1: HistoryRecord{408f6248 com.android.contacts/.DialtactsContactsEntryActivity} TaskRecord{40515ab0 #2 A com.android.launcher} Run #0: HistoryRecord{40766270 com.android.launcher/com.android.launcher2.Launcher} mPausingActivity: null mResumedActivity: HistoryRecord{405c4f48 com.android.launcher/com.android.launcher2.Launcher}
ホーム画面→Contacts→gmailに画面遷移したときのタスク。
複数のアプリをまたいでタスクが構成されているのが視覚的にわかります。
今、端末上に表示されているActivityも簡単に確認できます。
Activityに関する各種情報をファイルに保存するバッチファイル
こちらはActivity Managerの情報を取得してファイルに保存するだけ。
ファイル名はDDMSのスクリーンショットファイル名に合わせたつもり。
aam_step.bat
@echo off REM Android Activity Managerの情報を取得しファイルに保存する SET DT=%DATE:~-10% SET TM=%TIME: =0% set FILE=dump_am-%DT:~0,4%-%DT:~5,2%-%DT:~8,2%-%TM:~0,2%%TM:~3,2%%TM:~6,2%.txt adb shell dumpsys activity > %FILE%
蛇足
下記コマンドでdumpsys activityのヘルプが表示される
他にもデバッグに役立ちそうなオプションがいろいろあるけど把握してない
adb shell dumpsys activity -h
C:\>adb shell dumpsys activity -h Activity manager dump options: [-a] [-h] [cmd] ... cmd may be one of: a[ctivities]: activity stack state b[roadcasts]: broadcast state i[ntents]: pending intent state p[rocesses]: process state o[om]: out of memory management prov[iders]: content provider state s[ervices]: service state service [name]: service client-side state