这里只作冷启动的优化。app
首先咱们要知道App在启动时都干了些什么事,才能有针对的进行优化。 App的启动能够概括为三个阶段:异步
main()
函数执行前main()
函数执行后在main()函数执行前,系统主要会作如下几件事:函数
相应的这个阶段对于启动速度优化能够作的事情:大数据
main()执行后的阶段是指,从main()执行开始到appDelegate的didFinishLaunchingWithOptions方法里首屏渲染相关方法执行完成。优化
这里更加优化的开发方式是肯定哪些是首屏渲染必要的初始化功能,哪些是APP启动必要的初始化功能,而那些只是须要在对应的功能开始是才须要初始化的。整理出来以后,分别放到对应的阶段进行初始化线程
这个阶段就是从渲染完成时开始,到didFinishLaunchingWithOptions 方法做用域结束时结束。 这个阶段用户已经能够看到App的首页信息了,因此优化级别放在最后,可是耗时操做仍是要优先处理,以避免影响用户体验。指针
从main()函数执行后这个阶段下手,优化的思路是main()函数执行后到首屏渲染完成前只处理与首屏渲染相关的操做,非首屏业务的初始化,监听注册,配置文件读取等放到首屏渲染完层后处理。code
检查首屏渲染完成前主线程上有哪些耗时方法,将不必的耗时方法以后或者异步执行。一般状况下,耗时较长的方法主要发生在计算大量数据的状况下,具体表现就是加载,编辑,存储图片和文件等资源。 这里有两种方式能够能够监控App启动速度:进程