【问题标题】:Show Back Stack of Android显示 Android 堆栈
【发布时间】:2012-05-17 12:27:28
【问题描述】:

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

【问题讨论】:

标签: android android-activity


【解决方案1】:

我发现 Android Studio (0.5.1) 中提供了以下信息:View->Tool Windows->Android。然后在左侧选择 System Information 图标并从它的下拉列表中选择“Graphics State”。这将转储显示大量信息,但如果您向下滚动到“视图层次结构:”,您将看到当前的视图堆栈,即“后退堆栈”。

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

【讨论】:

  • 我发现“活动管理器状态”更有用
  • 在 Android 工作室 --> cat captures/SystemInfo_{date_info}.txt | grep 活动
【解决方案2】:

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

View the Task's activity stack

【讨论】:

    【解决方案3】:

    对于自己应用的后台栈,可以使用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()})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 2015-02-09
      • 2017-08-09
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多