显示返回Android堆栈

时间:2012-05-17 12:27:28

标签: android android-activity

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

3 个答案:

答案 0 :(得分:19)

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

OP确实询问了运行任务,所以如果选择“图形状态”选择“活动管理器状态”,你会发现更多信息(尽管我发现在“图形状态”中查看信息更为简单什么活动在后面的堆栈中。)

答案 1 :(得分:0)

已经存在一个类似于你的问题。我想这会回答你的问题:

View the Task's activity stack

答案 2 :(得分: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()})