我正在尝试创建一个应用程序(“ShowStack”)来查看当前的 App Back Stack(用于开发目的)。我知道这可以通过使用带有命令“adb shell dumpsys 活动活动”的 adb 来完成。我尝试使用 ActivityManager 函数 getAppTasks() 和 getRunningProcesses 等。但这些只返回 1 项的列表,即当前的应用程序/任务“ShowStack”,我已经知道了,谢谢。
如何查看所有任务/活动?
我正在尝试创建一个应用程序(“ShowStack”)来查看当前的 App Back Stack(用于开发目的)。我知道这可以通过使用带有命令“adb shell dumpsys 活动活动”的 adb 来完成。我尝试使用 ActivityManager 函数 getAppTasks() 和 getRunningProcesses 等。但这些只返回 1 项的列表,即当前的应用程序/任务“ShowStack”,我已经知道了,谢谢。
如何查看所有任务/活动?
您可以使用以下方式编写自己的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())
}
}
}
没有 API 可以让您查看整个后台堆栈。除非您针对的是有根设备,否则您很可能不走运,因为出于安全/隐私原因无法检查它。