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
2 获取返回栈中调用的Activity
可以使用 adb shell dumpsys activity 查看所有的返回栈信息,但是如果你只是简单的使用此命令,会发现打印的信息太多,难以定位。
查了很多资料,最终发现,只需要先筛选出包名,再筛选出 Run 关键字即可
adb shell dumpsys activity | findstr com.kugou.android | findstr Run
使用如下命令,可查看当前手机中所有未销毁的 Activity
adb shell dumpsys activity | findstr Run