安卓中展示返回栈的方法

20
为了更好地理解Android的行为,我想学习更多有关“后退栈”概念的知识。是否有一种方式可以按后退栈中的顺序列出所有活动?这还应包括所有其他正在运行的任务。

可能是查看任务的活动堆栈的重复问题。 - tir38
4个回答

18

我发现在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”中查看信息更简单)。


5
我认为“活动管理器状态”更有用。 - Sam
在Android Studio中,使用以下命令来捕获系统信息并检索ACTIVITY:cat captures/SystemInfo_{date_info}.txt | grep ACTIVITY - Ryhan

1

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

0
你可以使用Android Studio的Profiler来进行这些操作。在Profiler中,点击“内存使用图”,在这个图的顶部,Android Studio会显示所有的活动和它们的生命周期回调,比如stopped、destroyed等。
Profiler -> CPU使用图 -> 查看顶部,会显示当前活动和回调方法。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接