冷启动、热启动
冷启动:App启动前,它的进程不在系统里,系统新创建一个进程分配给它启动;
热启动:App冷启动后,将App退至后台,App进程还在系统里的情况下,用户重新进入App的过程;
App启动干了什么?如何优化?
- main()函数执行前
-加载可执行文件(.o);
-加载动态链接库,bind符号绑定等;
-运行时初始化,Objc相关类的注册,分类的注册;
-执行+load()方法,attribute修饰的函数的调用,创建C++静态全局变量;
优化
:--减少动态库加载,如果使用动态库较多,可以将多个动态库进行合并;
--减少启动后不会调用的方法;
--+load()方法里面的内容放到首屏渲染完成后执行,或使用+initialize()代替;
--控制C++全局变量的数量;- main()函数执行后(即main函数开始到appdelegate方法didfinish执行)
-首屏初始化所需配置文件和读写操作;
-列表数据读取;
-首屏渲染计算,基本是渲染首屏的操作;
优化
:区分哪些是app启动后必须初始化的功能,哪些是对应功能开始使用时才需要初始化的,将这些初始化放到合适的阶段调用;- 首屏渲染完成后
渲染完成后,就可以看到首页页面,一般就是其他业务基础功能的初始化,监听注册等; 这个阶段的优化一般就是整体的优化,包括功能、方法实现等;
今天就到这~