如何使用 adb 获取当前应用打开的所有 activity 及其调用关系

Android 中的活动(Activity)是可以重叠的。当我们启动一个新的活动之后,就会覆盖在原来的 activity 之上,然后点击 Back 返回键,最上面的活动就会被销毁,下面的活动又会重新显示。下图来源于《Android 第一行代码》

在这里插入图片描述

从刚刚的描述中,不难发现,用栈(先进后出)这样的一种数据结构来管理活动,是非常合适的。Android 中,使用 Task(任务)管理 activity,一个任务就是一组存放在栈里的 activity 的集合,我们也称之为返回栈

1 获取栈顶 Activity

打开目标应用,使用 adb 查找当前界面所属 activity 及对应的 app 包名

# 方法一:
adb shell dumpsys window | findstr mCurrentFocus
# 方法二:
adb shell dumpsys activity | findstr mFocusedActivity

adb

2 获取返回栈中调用的Activity

可以使用 adb shell dumpsys activity 查看所有的返回栈信息,但是如果你只是简单的使用此命令,会发现打印的信息太多,难以定位。
在这里插入图片描述
查了很多资料,最终发现,只需要先筛选出包名,再筛选出 Run 关键字即可

adb shell dumpsys activity | findstr com.kugou.android | findstr Run

在这里插入图片描述
使用如下命令,可查看当前手机中所有未销毁的 Activity

adb shell dumpsys activity | findstr Run

猜你喜欢

转载自blog.csdn.net/song_lee/article/details/105054128