Как просмотреть Back Stack программно?
Я пытаюсь создать приложение ("ShowStack") для просмотра текущего стека приложений (в целях разработки). Я знаю, что это можно сделать с помощью adb с командой "adb shell dumpsys активность активности". Я пытался использовать функции ActivityManager getAppTasks() и getRunningProcesses и т. Д. Но они возвращают только список из 1 элемента, текущего приложения / задачи "ShowStack", которое я уже знал, спасибо.
Как я могу просмотреть все задачи / действия?
1 ответ
Там нет API, который позволяет просматривать весь backstack. Если вы не нацелены на корневые устройства, вам, скорее всего, не повезет, поскольку нет способа проверить это по соображениям безопасности / конфиденциальности.
Вы можете написать свой собственный, используя
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())
}
}
}