app启动优化在ios开发中有着很重要的地位试想一天领导拿着竞品的APP对你说为什么他们的APP启动比我们公司的产品启动快呢,这时只有露出尴尬的笑容~
1.APP启动都干了什么事情呢
一般来说APP启动分为三个阶段
1.main函数之前
2.main函数之后
3.首个界面渲染完成后
其实我们用户在感知到启动慢一般都是因为很多在主线程做了很多消耗计算,处理但有时你都加了子线程,把一些不必要的操作放在其他界面但是启动还是慢这是为什么呢?我们来一起分析下
main函数执行前
1.加载可执行文件,其实就是APP所有的mach.o文件 2.加载动态库,静态库 这里需要注意静态库其实就是生成mach.0文件 而动态库是需要通过链接器进行符号绑定遍历。 3.在运行时ocjc相关类的注册,category注册等 4.执行+load方法
main之前如何优化?
1.1减少动态库加载,去掉一些不必要的动态库 不能去掉的可以将动态库合并最多可以6个自己生成合并为一个 2.减少+load方法 如何不能减少的可以尝试使用+initialize()方法替换 3.减少一些不必要的类或者方法 4.控制全局变量的数量
main()函数执行后
main函数执行后的阶段就是appdegate的didFinshLaunchingWithOptions方法 这里面主要以下操作
1.各种初始化 2.首页初始化所需要的配置文件操作 3.首页列表数据读取 4.首页渲染
main()函数执行后如何优化?
首先这里需要知道哪些是必须要做的初始化,哪些是首页渲染必须要做的初始化,哪些操作是首页操作必须要做的不需要的建议放到其他阶段比如我们之前的APP一开始就做了很多接口比如,系统配置,各种广告,任务等等一些列弹窗,其实这些都是可以放在后期处理或者延后操作,或者本地存储,不必要每次必须去请求
首页渲染完成后
首页完成后这是用户已经已经可以看到你的主页了但是可能还需要做下一步操作这时我们需要梳理那些操作是必要要在用户操作前处理的哪些是不妨碍用户进行下一步操作的如何不妨碍用户下一步操作可以做异步处理或者延时处理首先要保证用户的交互。这里操作的地方很多还是需要根据具体的业务场景处理。