2010-02-24 36 views
2

什么是启动一个应用程序,并计算在Android的推出时间(如果它可以与一些代码来完成,那么其更好)发射时间

+0

您的意思是应用程序启动的时间点,还是您要测量应用程序变得可用的时间? – 2010-02-24 09:29:36

+0

有什么区别...当屏幕变得可见(其实就是这个意思) – 2010-02-25 06:04:54

+0

看看我的答案在这里 - http://stackoverflow.com/a/33994484/2308720 – Oleksandr 2015-11-30 08:47:07

回答

6

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

因此,当您的应用程序的入口点是处理LAUNCH意图的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的可能性!

+0

谢谢你的提示! traceview的指南可以在这里找到http://developer.android.com/tools/debugging/debugging-tracing.html。请注意,您的Application类实例将在任何Activity之前启动,因此如果您有一些代码在Application.onCreate()中开始测量 – kotucz 2015-04-21 07:01:11

1

要做到这一点快,我会使用的logcat的最佳方式,如:

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

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

-1

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

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

欲了解更多信息,看一看: http://developer.android.com/tools/debugging/systrace.html

另外,我想指出,有时systrace将无法正常工作(取决于从FS映射)。

你需要检查'系统\核心\ ROOTDIR \ init.rc'用正确的'debugfs'安装。应:“挂载debugfs/SYS /内核/调试/ SYS /内核/调试”

1

将会有一个自动日志类似

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

从显示的应用程序的启动时间用户在应用上输入内容,就可以进一步与用户进行交互了。 这是来自ActivityManager。

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

1

你可以找到答案here -

此信息被登录的logcat默认情况下,API版本19或更高。 关键是在正确的地方寻找它 -

如果您正在跟踪的logcat输出命令行,或在终端,发现经过的时间是直接的。要在Android Studio中查找已用时间,您必须在logcat视图中禁用筛选器。禁用过滤器是必要的,因为系统服务器(而不是应用程序本身)为此日志提供服务。

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

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

提取物是从documentation