【问题标题】:iOS: Get time of app launchiOS:获取应用启动时间
【发布时间】:2014-09-10 18:37:20
【问题描述】:

是否可以从首次显示启动屏幕的那一刻开始确定当前应用的启动时间?我想确保启动屏幕显示一定的最短时间。

【问题讨论】:

  • 为什么不使用计时器?
  • 因为我的代码直到 启动图像消失后才会真正执行,所以我不知道它已经显示了多长时间。
  • 或者至少我是这样假设的。我实际上并不确定。
  • 事实上你不应该。它违反了 Apple iPhone 人机界面指南 (HIG)。阅读此thread
  • 和 99% 的其他应用程序一样,我们使用启动画面来显示徽标,因此它已经不符合 HIG。

标签: ios objective-c cocoa-touch


【解决方案1】:

这会让人觉得您的应用响应速度较慢,并且通常是糟糕的用户体验。但从技术角度来看,在 UIApplicationDelegate 的每个委托方法中删除断点或 NSLogs 以查看它们触发的顺序,并在 Time Profiler 中运行您的应用程序以查看花费的时间。

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

【讨论】:

  • 我个人同意这一点,但这不是我的决定。我不打算让延迟超过半秒。事实上,我问这个问题的原因是为了进一步减少这个问题,考虑到启动图像已经显示了多长时间,所以我不需要为用户画出更长的时间。
  • 如果这来自产品所有者,最好的方法可能是考虑将这些断点放入(和main())并保持它们之间的时间。例如,如果您可以将平均启动时间设置为 200 毫秒,然后再延迟 300 毫秒,那会让产品负责人高兴吗?
  • 希望如此!我不喜欢人为地减慢发射速度的想法。
【解决方案2】:

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

【讨论】:

  • 我也可以在main()的开头这样做。
  • 我很想知道两者之间经过的时间。
  • 既然你问了,我在我目前正在处理的应用程序中将差异基准测试为 0.84 秒(在禁用断点的调试器中运行时)。所以意义重大。 main() 看起来是迄今为止最好的选择。
  • 那是巨大的。我曾预计它大约为 100 毫秒。你在什么硬件上运行它?
  • iPhone 5。但是,连接调试器真的会减慢速度,所以不要指望这代表实际性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
相关资源
最近更新 更多