1

我正在尝试创建一个应用程序(“ShowStack”)来查看当前的 App Back Stack(用于开发目的)。我知道这可以通过使用带有命令“adb shell dumpsys 活动活动”的 adb 来完成。我尝试使用 ActivityManager 函数 getAppTasks() 和 getRunningProcesses 等。但这些只返回 1 项的列表,即当前的应用程序/任务“ShowStack”,我已经知道了,谢谢。

如何查看所有任务/活动?

4

2 回答 2

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())
        }
    }
}
于 2020-11-18T20:31:36.597 回答
0

没有 API 可以让您查看整个后台堆栈。除非您针对的是有根设备,否则您很可能不走运,因为出于安全/隐私原因无法检查它。

于 2018-09-17T14:19:16.373 回答