「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战」
引言
在Android的实际开发或者项目支持的时候,不知道小伙们有没有遇到过这种情况需要定位到某一个界面的Activity信息,虽然借着Android的IDE工具可以做到,但是有时候我们希望能有更快的方法能定位到这个界面信息,这个时候adb shell命令的强大就体现出来了。
方案一
adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'
复制代码
输出信息简单明了,列出的是你打开的所有页面,而顺序是以最近打开为先进行排序的,其中TaskRecord为查询到的记录,然后紧跟着该记录显示出包名和对应的Activity名
Running activities (most recent first):
TaskRecord{c9e9ecb #82 A=com.android.deskclock U=0 StackId=1 sz=1}
Run #0: ActivityRecord{cb1be5c u0 com.android.deskclock/.DeskClock t82}
Running activities (most recent first):
TaskRecord{195f930 #78 I=com.android.launcher3/.Launcher U=0 StackId=0 sz=1}
Run #0: ActivityRecord{3ef71d8 u0 com.android.launcher3/.Launcher t78}
Running activities (most recent first):
TaskRecord{feda6a8 #81 A=com.android.systemui U=0 StackId=5 sz=1}
Run #0: ActivityRecord{30d91fc u0 com.android.systemui/.recents.RecentsActivity t81}
复制代码
方案二
adb shell dumpsys activity | grep -i run
复制代码
输出信息简单明了,列出的是你打开的所有页面,而顺序是以最近打开为先进行排序的。
service_reset_run_duration=60000
Running activities (most recent first):
Run #1: ActivityRecord{cb1be5c u0 com.android.deskclock/.DeskClock t82}
Run #0: ActivityRecord{da6223d u0 com.android.gallery3d/.app.GalleryActivity t83}
Running activities (most recent first):
Run #0: ActivityRecord{3ef71d8 u0 com.android.launcher3/.Launcher t78}
Running activities (most recent first):
Run #0: ActivityRecord{30d91fc u0 com.android.systemui/.recents.RecentsActivity t81}
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
User #0: state=RUNNING_UNLOCKED
复制代码
方案三 输出activity栈
adb shell dumpsys activity top | grep ACTIVITY
复制代码
输出信息简单明了,列出的是你打开的页面,这里有点相反,是以倒序方式排序的。最上层的activity在最后。
方案四 输出正在前台交互activity
adb shell dumpsys window | grep mCurrentFocus
复制代码
130|XXX:/ # dumpsys window | grep mCurrentFocus
mCurrentFocus=Window{31e5cd4 u0 com.android.gallery3d/com.android.gallery3d.app.GalleryActivity}
复制代码
总结
AMS之dumpsys
这里都是借助的一个Android内置终端命令dumpsys来操作的,关于dumpsy大伙可以参见AMS之dumpsys篇。
adb loacat命令详解
此处也推荐一篇 adb logcat命令详解