首页 > 解决方案 > 如何以编程方式查看 Back Stack?

问题描述

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

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

标签: androidandroid-activitymanager

解决方案


您可以使用以下方式编写自己的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())
        }
    }
}

推荐阅读