由于APP经常出现启动问题,像启动速度缓慢、启动耗时久等问题,所以,大家都对APP启动速度优化比较感兴趣,那么,下面我来给大家分享几个优化小妙招!
一、对APP启动性能进行分析
我个人认为分析APP启动状况最快捷的方法就是使用工具,同时这也是现在大多数开发人员所采用的方法;使用工具不仅快捷,分析得出的结果也比人为的精准;比如“友盟U-APM”应用性能检测工具,通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。
分析APP的启动状况也是“轻松拿捏”,帮助开发者日常监控应用的启动性能,及时发现导致慢启动、启动崩溃问题并解决,评估应用的启动性能,测试慢启动、启动崩溃等问题!总之,想要既快捷又精准,使用友盟U-APM便是最好的选择!
影响APP启动性能的因素
1、main()函数之前耗时的影响因素
·动态库加载越多,启动越慢
·OC类越多,启动越慢
·C的constructor函数越多,启动越慢
·C++静态对象越多,启动越慢
·OC的+load越多,启动越慢
2、main()函数之后耗时的影响因素
·执行main()函数的耗时
·执行applicationWillFinishLaunching的耗时
·rootViewController及其childViewController的加载、view及其subviews的加载
三、App启动速度优化的方法
1、pre-main阶段的优化
①排查无用的dylib,移除不再使用的libicucore.tbd
②删除无用文件&库,合并重复文件(多个重复的分类)。移除不再使用的库UMSocial、PSTCollectionView、MCSwipeTableViewCell,移除功能重复的库Mantle。
③梳理各个类的+load方法,将多个类中+load方法做的事延迟到+initiailize里去做。
2、main()阶段的优化
①将多个二方/三方库延迟加载。包括TBCrashReporter、TBAccsSDK、UT、TRemoteDebugger、ATSDK等。
②将若干系统UI配置、业务逻辑延迟执行。包括注册推送、检查新版本、更新Orange配置等。
③避免多余的计算。之前会前后两次获取是否要显示广告图,每次获取都需要反序列化Orange中的配置信息,再比较配置中的开始/结束时间,大约耗时20ms。目前的解决方案是第一次计算后,用一个BOOL属性缓存起来,下次直接取用。
④延迟加载&懒加载部分视图。快捷密码验证页是启动图消失后用户看到的第一个页面,这个页面由于涉及到图片的解码、多个视图的创建&布局,viewDidLoad阶段会耗时100ms左右。目前的解决方案是把其中密码输入框视图延迟到viewDidAppear里加载,对密码错误提示视图做成懒加载,耗时降低到30m左右。
总结
今天的内容就讲解到这里了,其他相关精彩内容我们下期再讲!此外,由于字数有限,友盟的功能只是简单给大家罗列了一小部分,其余功能大家可登录官方网站免费体验!