20

为了更好地理解 Android 的行为,我想了解更多关于后台堆栈概念的信息。有没有办法列出所有活动,因为它们在后堆栈中排序。这还应该包括所有其他正在运行的任务。

4

3 回答 3

19

我发现此信息在 Android Studio (0.5.1) 中可用:View->Tool Windows->Android。然后在左侧选择系统信息图标,然后从它的下拉列表中选择“图形状态”。这将转储显示大量信息,但如果您向下滚动到“视图层次结构:”,您将看到当前的视图堆栈,即“后退堆栈”。

OP 确实询问了有关运行任务的问题,因此,如果选择“图形状态”,请选择“活动管理器状态”,您会发现更多信息(尽管我发现在“图形状态”中查看信息更简单,以便专门查看哪些活动位于后堆栈中)。

于 2014-03-13T22:47:43.807 回答
0

已经有一个问题与您的问题相似。我想这会回答你的问题:

查看任务的活动堆栈

于 2012-05-17T13:08:51.197 回答
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())
        }
    }
}

然后,您可以随时使用以下命令记录它:

Log.d(TAG, "${ActivityBackStackTracker.getCurrentActivityStack()})
于 2020-11-18T20:42:10.130 回答