如何以编程方式查看Back Stack?

时间:2018-09-17 14:18:02

标签: android android-activitymanager

我正在尝试创建一个应用程序(“ ShowStack”)以查看当前的应用程序后退堆栈(出于开发目的)。我知道可以通过将adb与命令“ adb shell dumpsys activity Activities”一起使用来完成。 我尝试使用ActivityManager函数getAppTasks()和getRunningProcesses等。但是这些仅返回1个项目的列表,即当前的应用程序/任务“ ShowStack”,我已经知道了。

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

2 个答案:

答案 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())
        }
    }
}