はじめに
Android で起動している Activity を確認するには Android 上で動作する dumpsys コマンドを利用します。dumpsys コマンドを利用すればシステム・サービスから情報を取得でき、起動している Activity の状態などを取得できます。ちなみにどのシステムサービスから情報が取得できるのかは adb shell dumpsys -l
で確認できます。情報が取得できるシステムサービスはたくさんあります、今回はこの中の activity から情報を取得して起動している Activity を確認します。
adb shell dumpsys -l
Currently running services:
DockObserver
GuiExtService
SurfaceFlinger
accessibility
account
activity
alarm
android.security.keystore
anrmanager
appops
appwidget
audio
autofill
backup
battery
batteryproperties
batterystats
binder_calls_stats
bluetooth_manager
carrier_config
clipboard
commontime_management
companiondevice
connectivity
connmetrics
consumer_ir
content
contexthub
country_detector
cpuinfo
crossprofileapps
csdk
dbinfo
device_identifiers
device_policy
deviceidle
devicestoragemonitor
diskstats
display
dreams
drm.drmManager
dropbox
ethernet
gfxinfo
gpu
graphicsstats
hardware_properties
imms
imtksms
input
input_method
iphonesubinfo
iphonesubinfoEx
ipsec
isms
isub
isubstub
jobscheduler
launcherapps
location
lock_settings
media.audio_flinger
media.audio_policy
media.camera
media.camera.proxy
media.drm
media.extractor
media.metrics
media.player
media.resource_manager
media.sound_trigger_hw
media_projection
media_resource_monitor
media_router
media_session
meminfo
midi
mount
mtk_telecom
mtkconnmetrics
mtksimphonebook
netd_listener
netpolicy
netstats
network_management
network_score
network_time_update_service
network_watchlist
notification
oem_lock
omadm_service
otadexopt
overlay
package
package_native
permission
persistent_data_block
phone
phoneEx
pinner
power
power_hal_mgr_service
print
processinfo
procstats
recovery
restrictions
scheduling_policy
search
search_engine_service
sec_key_att_app_id_provider
secure_element
sensorservice
serial
servicediscovery
settings
shortcut
simphonebook
slice
soundtrigger
stats
statscompanion
statusbar
storaged
storaged_pri
storagestats
system_update
telecom
telephony.mtkregistry
telephony.registry
textclassification
textservices
thermalservice
timezone
trust
uimode
updatelock
usagestats
usb
user
vibrator
voiceinteraction
vrmanager
wallpaper
webviewupdate
wifi
wificond
wifip2p
wifiscanner
window
adb shell dumpsys activity activities
で起動している Activity を確認する
adb shell dumpsys activity activities
で起動している Activity を確認できます。
例えば jp.kaleidot725.sample
というサンプルアプリを起動した状態で取得します。
画面状態
多くの情報が一気に出力されるのですが起動している Activity に関する情報は Running activites
に記載されています。今は jp.kaleidot725.sampole
の MainActivity
を起動しているので次のように出力されます。
出力結果
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Display #0 (activities from top to bottom):
︙ 省略
Running activities (most recent first):
TaskRecord{e64923a #222 A=jp.kaleidot725.sample U=0 StackId=0 sz=1}
Run #0: ActivityRecord{18177e0 u0 jp.kaleidot725.sample/.MainActivity t222}
︙ 省略
jp.lakeidot725.sample
で別の Activity の遷移が発生に応じて出力される内容も変化します。
例えば MainActivty
から SubActivity
に遷移させて状態を取得してみます。
画面状態
遷移が実行されると MainActivity
の上に SubActivity
がスタックされるので次のように出力されます。
出力結果
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Display #0 (activities from top to bottom):
︙ 省略
Running activities (most recent first):
TaskRecord{e64923a #222 A=jp.kaleidot725.sample U=0 StackId=0 sz=2}
Run #1: ActivityRecord{b9c9bdd u0 jp.kaleidot725.sample/.SubActivity t222}
Run #0: ActivityRecord{18177e0 u0 jp.kaleidot725.sample/.MainActivity t222}
︙ 省略
というように adb shell dumpsys activity activities
の Running activites
を確認すれば起動している Activity を確認できます。
adb shell dumpsys activty activities
ではこの他にも onResume している Activity や
最後に onPaused した Activity を確認できるようになっています。
なにか Activity 周りで動作がおかしかったり
想定通りにならないときには dumpsys
を使って解析するとなにかわかりそうですね。
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Display #0 (activities from top to bottom):
︙ 省略
Running activities (most recent first):
TaskRecord{e64923a #222 A=jp.kaleidot725.sample U=0 StackId=0 sz=2}
Run #1: ActivityRecord{68c3212 u0 jp.kaleidot725.sample/.SubActivity t222}
Run #0: ActivityRecord{18177e0 u0 jp.kaleidot725.sample/.MainActivity t222}
mResumedActivity: ActivityRecord{68c3212 u0 jp.kaleidot725.sample/.SubActivity t222}
mLastPausedActivity: ActivityRecord{18177e0 u0 jp.kaleidot725.sample/.MainActivity t222}
︙ 省略
おわりに
dumpsys
を使えば Android で動作しているサービスからたくさんの情報を取得できるみたいですね。普通には利用するケースは無いかもしれませんが端末依存の問題の解析などには使えそうですね。その他にも組込機器として Android を使う場合には重宝しそうです。(外部機器に接続できているか確認したり色々できそう!)