启动应用程序并在android中计算其启动时间的最佳方法是什么(如果可以使用某些代码完成,那么它更好)
答案 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'