加速启动时间。快速打开app是很重要的,特别是用户第一次打开它时,对app来讲,第一印象太太太重要了。
之前搜过一些关于启动时间的文章, 发现只能边长, 但不能变短,
也就是说, 通过代码, 我们是控制不了他的启动时间的,
想要缩短启动时间就只能减少在这段时间里 需要做的事情
那么首先 我们来看看 在这段时间里, 程序都做了些什么:
Info.plist
pch 文件
main 函数
UIApplication和delegate
UIWindow
这是目前我所知道的, 可能不全
在这基础上, 我们能够控制的了 的就是 appDelegate 了, 还有就是pch里导入的头文件尽可能少
也就是说尽可能的少在appDelegate 里写东西
尽可能的使热启动(应用已经在后台运行,某个事件将其带至前台)时间无限的接近冷启动(完全没有运行的应用的启动时间)时间
你能做的就是使它尽可能做更多的异步任务,比如加载远端或者数据库数据,解析数据。避免过于庞大的XIB,因为他们是在主线程上加载的。所以尽量使用没有这个问题的Storyboards吧!一定要把设备从Xcode断开来测试启动速度
以下是Facebook 工程师的解决方案
- 通过分析,删除第一次网络请求之前不必要的依赖项,仅保留所必需的有效身份验证令牌和订阅游标;
- 借助一种他们称之为UDP priming的技术减少建立安全TCP连接(需要三次服务器往返通信)的时间。简单来说,应用会向服务器发送一个加密过的UDP数据包,其中包含订阅请求。这可以提示服务器将会有一个真正的TCP请求到达,那样服务器就可以提前获取和缓存数据。