【问题标题】:Launch iOS app faster更快地启动 iOS 应用程序
【发布时间】:2013-01-26 17:41:33
【问题描述】:

我发现一些 iOS 应用程序的启动速度非常快(例如 YouTube-来自 google、Skype、iTunes)。

我创建了一个空应用程序(使用标准选项卡式应用程序模板),我根本没有更改任何代码,只是添加了启动图像。当我测试时(尝试同时对开发人员和 Ad-Hoc 配置文件进行签名以检查是否有任何差异),它的启动速度没有上述应用程序那么快。

当我点击设备上的应用程序图标时,应用程序图标会变暗约 0.2-0.5 秒,然后开始显示启动画面。

我的问题是如何让我的应用程序启动得非常快,有什么技巧可以快速显示启动图像吗? (我想知道我的空应用程序如何启动比上述应用程序慢?)

谢谢

【问题讨论】:

  • 关键是不要在applicationDidFinishLaunching: 中加载但是如果你刚刚有一个空的应用程序,那么它应该是你设备上启动速度最快的应用程序。我会把它归结为开发调试会减慢你的速度。
  • @OP 您使用的是哪个 iOS 版本和 iOS 设备,因为我无法通过 iPod touch 5G 重现 Matt 在 iOS 6 上提到的延迟时间。
  • 我使用 iOS 6 和 iPhone 4
  • @ChathurangaJayawardhana,作为记录,我确实使用您的配置重现了该问题。

标签: ios performance ios6 iphone-4


【解决方案1】:

我认为您也可能中了一个诡计:至少对于 iTunes 应用程序,Apple 正在用运行时看起来非常像应用程序的图像覆盖启动图像,这会产生应用程序立即加载的错觉。试试看:

启动 iTunes(或“音乐”)并开始播放,然后执行其他操作以使系统尽可能地交换进程(例如,浏览一些繁重的网站)。然后重新启动 iTunes 并立即尝试暂停音频。在我的 iPhone 4 上,控件赶上之前大约需要 3 秒:位置指示器会跳到正确的位置,在此之前,“播放”按钮处于非活动状态 - 您无法暂停音频。您看到的启动画面旨在让您认为应用程序正在立即启动,即使它确实需要几秒钟才能启动。

我还注意到 iOS 版 Chrome 也在做同样的事情。我实际上不喜欢这个设计决策,因为它表明应用程序已经准备就绪,然后您可以对其进行任何操作。

【讨论】:

  • 其实可能跟release中启用的调试优化有关
  • 只是一个旁注。正如苹果公司建议的那样,我实际上做了这样的事情。但是我同意@Matt。它使您的应用程序看起来没有响应,所以我所做的是采用“默认”图像,并将其变暗一点,然后当应用程序准备好时,它会变亮。我认为它给人一种非常好的感觉。
  • 我发现许多应用程序都在覆盖启动画面,但是他们是如何做到的,有没有办法在调用 applicationDidFinishLaunching 之前显示启动画面:有什么想法吗?
【解决方案2】:

我根本没有更改任何代码,只是添加了启动图像

加载图像并非旨在显示启动图像,它们旨在显示应用程序界面的静态版本,以产生应用程序加载速度比实际速度更快的错觉。

Apple 在 HIG 中特别警告不要使用飞溅图像。

停止滥用加载图像来显示启动图像,开始正确使用它们,您的应用程序看起来会加载得更快。

【讨论】:

    【解决方案3】:

    链接到尽可能少的框架,我们在 WWDC 上进行了尝试,链接到许多框架会在调用 main() 方法之前产生明显的延迟!

    无论你的代码本身有多快!

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 2013-05-23
      • 2012-02-02
      • 2020-03-20
      • 2018-12-15
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多