【问题标题】:How much does iOS app size impact app launch latency?iOS 应用程序大小对应用程序启动延迟有多大影响?
【发布时间】:2021-07-23 00:37:36
【问题描述】:

我猜测 iOS 应用程序的大小对其启动延迟有直接影响,因为 iOS 需要在启动之前将应用程序加载到内存中。如果是这样,我想知道影响有多大?

假设我将我的 iOS 应用程序从 100M 减少到 80M,我可以期待多少启动延迟改进?

有人有这方面的经验吗?

【问题讨论】:

  • 不能肯定,但我认为最重要的是您的初始视图控制器的复杂性。一旦我在初始 vc 中加载了一个超过 10,000 行的文件,启动大约需要 5 秒。当我删除它时,它变成了约 1 秒。应用程序的大小并不重要。
  • 您计划如何缩小应用程序的大小?在您的应用启动期间,您的入口点(通常是您的第一个视图控制器)被加载到内存中,而不是整个应用。
  • 最好的方法是测量它。

标签: ios objective-c iphone latency launching-application


【解决方案1】:

考虑到编写更快的应用启动体验根本不受应用大小的限制。您甚至可以假设相反,因为在某些(我什至会说在大多数情况下)编写更快的启动过程启动可以(并且将会)涉及更多代码,使其成为非常短的交互中断体验,因此您的应用程序大小会增加,甚至不会提供更多有价值的内容。

换句话说,仅仅因为您提供更多动态或静态内容并不会增加启动时间,除非您稍后在应用程序生命周期中在UIApplicationDelegate 中加载和实例化您需要的所有内容,而不是在使用时分配对象。

如果需要,同样的理念也适用于拆除处理(dealloc 或保存应用状态用户默认值)。但这种体验通常不会被视为与设备交互的明显中断,因此经常被遗忘为应用生命周期的一部分。

您可以通过巧妙地使用LaunchScreen 故事板或类似技术(例如在第一秒内部分缓冲内容)来避免用户长时间的启动体验。有些应用甚至会在下次启动时截取屏幕截图,让用户在构建真实界面时感觉上一个应用状态已经加载。

您可能也经常看到的一个常见错误是利用介绍视频或动画来缩短应用启动后等待窗口/视图出现的时间。因此,如果需要直接加载的内容将花费明显更长的时间并且无法避免,那么仅使用启动屏幕绝不是最好的解决方案,而是一个明智的决定。

LaunchScreens 只是娱乐/通知处理和保持用户参与,同时它可以有益于您和您的应用想要表示的内容。

因此,缩短的启动时间显然是一个设计模式问题,并且不受应用程序大小的限制。好的,如果需要的话,除了下载带宽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2019-02-21
    • 2021-12-01
    相关资源
    最近更新 更多