【问题标题】:Launch Time of an app应用程序的启动时间
【发布时间】:2010-02-24 09:22:05
【问题描述】:

在android中启动应用程序并计算其启动时间的最佳方法是什么(如果可以用一些代码完成,那就更好了)

【问题讨论】:

  • 您是指应用程序启动的时间点,还是您想衡量应用程序变为可用所用的时间?
  • 有什么区别......当屏幕变得可见时(实际上就是我的意思)

标签: android performance launching-application


【解决方案1】:

嗯 - 首先,更准确地说,我应该指出,在 Android 中,您启动的是活动,而不是应用程序!

因此,由于您的应用程序的入口点是处理 LAUNCH 意图的 Activity,因此可以将您的问题解释为“如何测量 Activity 启动时间”。

为此,我建议在这里查看活动生命周期:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

看看那里漂亮的图表,您会发现启动时间基本上是在onCreate()onStart()onResume() 中花费的时间。

为了衡量这一点,我建议使用traceview,因为这将真正向您展示您花费时间的所有细节!在onCreate() 的开头使用Debug.startMethodTracing("startUp"); 开始跟踪,并在onResume() 的末尾使用Debug.stopMethodTracing(); 结束跟踪。

因为onCreate() 每个实例只调用一次,您甚至不必担心多次调用onResume() 以防此活动被置于后台,因为您将调用两次 stop 方法,即没坏处!

玩得开心-我非常喜欢traceview的可能性!

【讨论】:

【解决方案2】:

为了快速完成,我会使用 logcat,例如:

Log.d("tag", "starting");
/* code goes here */
Log.d("tag", "finished");

如果你想做更大的事情,试试Traceview

【讨论】:

    【解决方案3】:

    会有类似的自动日志

    system_process I/ActivityManager﹕ Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms
    

    显示从用户在其上输入应用程序到应用程序准备好与用户进行更多交互的启动时间。 那是来自 ActivityManager。

    另外,使用 log 来测量从 onCreate() 到 onResume 的时间应该是另一个好方法。

    【讨论】:

      【解决方案4】:

      你可以找到答案here -

      对于 API 版本 19 或更高版本,此信息默认记录在 Logcat 上。 关键是在正确的地方寻找它 -

      如果您从命令行或终端中跟踪 logcat 输出,查找经过的时间很简单。要在 Android Studio 中查找经过的时间,您必须在 logcat 视图中禁用过滤器。禁用过滤器是必要的,因为系统服务器而不是应用程序本身提供此日志。

      为了完整性,这里是文档中的示例。

      ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms

      摘录来自documentation

      【讨论】:

        【解决方案5】:

        在上面的答案范围内,我想指出,由于 JIT 在分析时关闭,Traceview 无法提供实时。 Traceview 是监控源代码执行时间的无用工具。 (Traceview 是只检查堆栈跟踪的好工具,如上所述,通过使用带有 startMethodTracing() 和 stopMethodTracing() 的 Debug 类)。

        我建议使用 systrace(例如通过 Eclipse 插件),这是计算实时执行时间(以及许多其他功能)的最佳工具。

        有关更多信息,请查看: http://developer.android.com/tools/debugging/systrace.html

        另外,我想指出,有时 systrace 不起作用(取决于 FS 映射)。

        您需要检查 'system\core\rootdir\init.rc' 是否安装了正确的 'debugfs'。应该是:'mount debugfs /sys/kernel/debug /sys/kernel/debug'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-11
          • 2011-05-26
          • 2011-05-12
          • 2012-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多