2

What is the best way to launch an app and calculate its launch time in android(if it can be done with some code,then its better)

4

5 回答 5

6

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

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

为此,我建议在这里查看活动生命周期: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 的可能性!

于 2010-02-24T13:15:05.000 回答
1

为了快速做到这一点,我会使用 logcat,比如:

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

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

于 2010-02-24T11:26:44.247 回答
1

你可以在这里找到答案——

对于 API 版本 19 或更高版本,此信息默认记录在 Logcat 上。关键是找对地方——

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

这是文档中的示例以确保完整性。

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

摘录来自文档

于 2017-03-10T13:56:26.223 回答
1

会有一个类似的自动日志

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

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

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

于 2015-08-21T15:11:39.597 回答
-1

在上面的答案范围内,我想指出,由于 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'

于 2013-12-06T11:49:51.773 回答