什么是启动一个应用程序,并计算在Android的推出时间(如果它可以与一些代码来完成,那么其更好)发射时间
发射时间
回答
嗯 - 首先,更准确地说,我应该指出,在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的可能性!
谢谢你的提示! traceview的指南可以在这里找到http://developer.android.com/tools/debugging/debugging-tracing.html。请注意,您的Application类实例将在任何Activity之前启动,因此如果您有一些代码在Application.onCreate()中开始测量 – kotucz 2015-04-21 07:01:11
要做到这一点快,我会使用的logcat的最佳方式,如:
Log.d("tag", "starting");
/* code goes here */
Log.d("tag", "finished");
如果你想做更大的事情,请尝试Traceview。
在上面的答案范围内,我想说明的是,由于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 /内核/调试”
将会有一个自动日志类似
system_process I/ActivityManager﹕ Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms
从显示的应用程序的启动时间用户在应用上输入内容,就可以进一步与用户进行交互了。 这是来自ActivityManager。
另外,使用日志来测量从onCreate()到onResume的时间应该是另一个好方法。
你可以找到答案here -
此信息被登录的logcat默认情况下,API版本19或更高。 关键是在正确的地方寻找它 -
如果您正在跟踪的logcat输出命令行,或在终端,发现经过的时间是直接的。要在Android Studio中查找已用时间,您必须在logcat视图中禁用筛选器。禁用过滤器是必要的,因为系统服务器(而不是应用程序本身)为此日志提供服务。
下面是完整性文档中的示例。
ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms
提取物是从documentation。
- 1. 从到达时间和旅行时间计算发射时间
- 2. Cronjob发射错误的时间表。
- 3. C#反射:发射日期时间属性值
- 4. C#按时发射
- 5. QTimer不以建议的时间间隔发射信号
- 6. PySide在线程间发射无时发生崩溃
- 7. 报警管理器有时在错误的时间发射
- 8. 本地通知在多个时间和非计划时间内发射
- 9. 设计时间反射
- 10. 映射时间和TimeSpan
- 11. Android NFC射频时间
- 12. C#反射日期时间?
- 13. Elasticsearch - 日期时间映射
- 14. 映射时间与RestKit
- 15. socket.io发射三次发射
- 16. RxJS:(时间)下一次发射后开始的缓冲区
- 17. 石英春CronTrigger发射更多的时间比配置
- 18. RxJs:如何在预定义时间发射事件?
- 19. socket io独特频道 - 发射时不指定房间
- 20. 节点回调在同一时间发射
- 21. 通知没有在正确的时间发射
- 22. Chrome扩展弹出关闭在错误的时间发射
- 23. 用javascript眨眼标签,在不同时间发射
- 24. 如何用RXjs随时间发射一组值?
- 25. 映射时隙到时间戳
- 26. 开发时间
- 27. 发射后取消订阅间隔
- 28. Socket.io发射到不存在的房间
- 29. 套接字发射到特定房间
- 30. Socket.io MVC node.js发射到房间
您的意思是应用程序启动的时间点,还是您要测量应用程序变得可用的时间? – 2010-02-24 09:29:36
有什么区别...当屏幕变得可见(其实就是这个意思) – 2010-02-25 06:04:54
看看我的答案在这里 - http://stackoverflow.com/a/33994484/2308720 – Oleksandr 2015-11-30 08:47:07