2014-09-10 72 views
0

是否可以确定从启动屏幕第一次显示的那一刻起当前应用程序启动的时间?我想确保启动屏幕显示一定的最短时间。iOS:获取应用程序启动时间

+0

为什么不使用计时器? – rebello95 2014-09-10 18:38:59

+0

因为我的代码不会真正执行,直到*发布图像消失后,我不知道它已经显示了多长时间。 – devios1 2014-09-10 18:39:34

+0

或者至少我假设。我实际上并不知道这一点。 – devios1 2014-09-10 18:40:50

回答

0

我建议在您的应用代理的-[id<UIApplicationDelegate> application:applicationWillFinishLaunchingWithOptions:]方法中捕获当前时间并存储该值以备后用。

+0

我也可以在'main()'的开头执行此操作。 – devios1 2014-09-10 18:45:52

+0

我很想知道两者之间的流逝时间。 – Holly 2014-09-10 18:48:28

+0

既然你问了,我在0.84秒的基准测试中,我正在处理的应用程序(当在禁用断点的调试器中运行时)的差异。所以这很重要。 'main()'看起来是迄今为止最好的选择。 – devios1 2014-09-10 18:57:15

1

这会产生一种感觉,认为您的应用响应性较差,并且通常是不好的用户体验。但从技术角度来看,在UIApplicationDelegate上的每个代理方法中都可以放置断点或NSLog以查看它们触发的顺序,然后在Time Profiler中运行应用程序以查看花费时间。

WWDC会议专门用于缩短从用户点击应用图标到应用完全启动并准备好用于用户交互的时间。最好的用户体验来自尽可能接近零的时间。用户不喜欢看贵公司的标志,这是HIG禁止的。

+0

我个人同意这一点,但这不是我的决定。我不打算延迟超过半秒。事实上,我提出这个问题的理由是,通过考虑已经显示的启动图像已经显示了多长时间来进一步减少这个问题,所以我不会毫无必要地为用户绘制更长的图像。 – devios1 2014-09-10 18:49:31

+0

如果这是从产品所有者那里下来的,最好的路线可能是考虑放弃(和在main()中)的这些断点并保持它们之间的时间间隔。如果您的平均启动时间达到200毫秒,那么延迟300毫秒,会使产品拥有者满意吗? – wjl 2014-09-10 18:52:04

+0

让我们希望如此!我不喜欢人为地放慢发射速度的想法。 – devios1 2014-09-10 18:59:44