为了更好地理解Android的行为,我想学习更多有关“后退栈”概念的知识。是否有一种方式可以按后退栈中的顺序列出所有活动?这还应包括所有其他正在运行的任务。
我发现在Android Studio(0.5.1)中有这些信息可用:View->Tool Windows->Android。然后在左侧选择System Information图标,从它的下拉菜单中选择“Graphics State”。这将显示大量信息,但如果您向下滚动到“View hierarchy:”,则会看到当前视图堆栈,即“Back Stack”。
OP确实问到了正在运行的任务,因此如果选择“Graphics State”太麻烦,请选择“Activity Manager State”,您会发现更多信息(尽管我发现在特别查看后台堆栈的活动时,在“Graphics State”中查看信息更简单)。
对于您自己应用程序的后退堆栈,您可以使用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())
}
}
}
然后你可以随时记录它:
Log.d(TAG, "${ActivityBackStackTracker.getCurrentActivityStack()})