我正在尝试创建一个应用程序(“ ShowStack”)以查看当前的应用程序后退堆栈(出于开发目的)。我知道可以通过将adb与命令“ adb shell dumpsys activity Activities”一起使用来完成。 我尝试使用ActivityManager函数getAppTasks()和getRunningProcesses等。但是这些仅返回1个项目的列表,即当前的应用程序/任务“ ShowStack”,我已经知道了。
如何查看所有任务/活动?
答案 0 :(得分:0)
没有可以让您窥视整个堆栈的API。除非您将目标锁定在具有根目录的设备上,否则您很可能会碰运气,因为出于安全/隐私原因,无法检查它。
答案 1 :(得分:0)
您可以使用Application.ActivityLifecycleCallbacks
编写自己的照片:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
ActivityBackStackTracker.install(this)
}
}
class ActivityBackStackTracker : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, bundle: Bundle?) {
activityStack.add(activity::class)
}
override fun onActivityDestroyed(activity: Activity) {
activityStack.remove(activity::class)
}
//..
companion object {
private val activityStack = mutableListOf<KClass<out Activity>>()
fun getCurrentActivityStack() = listOf(activityStack)
fun install(app: Application) {
app.registerActivityLifecycleCallbacks(ActivityBackStackTracker())
}
}
}