应用程序的启动时间

时间:2010-02-24 09:22:06

标签: android performance launching-application

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

5 个答案:

答案 0 :(得分:6)

嗯 - 首先,更确切地说,我应该指出,在Android中你开始活动,而不是应用程序!

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

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

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

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

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

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

答案 1 :(得分:1)

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

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

如果您想做更大的事情,请尝试Traceview

答案 2 :(得分:1)

会有一个类似

的自动日志
system_process I/ActivityManager﹕ Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms

显示应用程序从用户输入应用程序到应用程序的启动时间,以准备与用户进一步交互。 那是来自ActivityManager。

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

答案 3 :(得分:1)

您可以找到答案here -

默认情况下,对于API版本19或更高版本,此信息会记录在Logcat上。 关键是在正确的位置寻找 -

  

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

以下是完整性文档中的示例。

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

摘录来自documentation

答案 4 :(得分:-1)

在上面的答案范围内,我想指出,由于JIT在分析时被关闭,Traceview无法提供实时。 Traceview是监视源代码执行时间的无用工具。 (Traceview是一个很好的工具来检查stacktrace,如上所述,使用带有startMethodTracing()和stopMethodTracing()的Debug类。

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

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

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

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