【发布时间】:2012-05-17 12:27:28
【问题描述】:
为了更好地理解 Android 的行为,我想了解更多关于后台堆栈概念的信息。有没有办法列出所有活动,因为它们在后堆栈中排序。这还应该包括所有其他正在运行的任务。
【问题讨论】:
为了更好地理解 Android 的行为,我想了解更多关于后台堆栈概念的信息。有没有办法列出所有活动,因为它们在后堆栈中排序。这还应该包括所有其他正在运行的任务。
【问题讨论】:
我发现 Android Studio (0.5.1) 中提供了以下信息:View->Tool Windows->Android。然后在左侧选择 System Information 图标并从它的下拉列表中选择“Graphics State”。这将转储显示大量信息,但如果您向下滚动到“视图层次结构:”,您将看到当前的视图堆栈,即“后退堆栈”。
OP 确实询问了有关正在运行的任务,因此,如果选择“图形状态”,请选择“活动管理器状态”,您会发现更多信息(尽管我发现在“图形状态”中查看信息以便专门查看更简单在后台堆栈中有哪些活动)。
【讨论】:
已经有一个问题与您的问题相似。我想这会回答你的问题:
【讨论】:
对于自己应用的后台栈,可以使用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()})
【讨论】: