android - 如何以编程方式查看 Back Stack?
问题描述
我正在尝试创建一个应用程序(“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())
}
}
}
推荐阅读
- python - 当原始字符串在三引号中时,为什么会出现“SyntaxError: (unicode error)”?
- react-native - React Native 从图像中读取 pdf417 条码
- android - 来自 gradle.properties 的 Android manifestPlaceholders
- php - Mongodb如何更新多个数组文件
- python - 在不占用键盘的情况下将击键发送到非活动的 GUI 应用程序
- python - 如何重命名然后将特定子文件夹移动到另一个目录?
- python - 在python中返回一个元组的文字字符串
- c# - AvalonDock MVVM 锚定位置
- javascript - Angular 5 +如何使用IE 11中的键盘左/右选项逐个字符移动光标
- python - 将包含零的列导出到 csv