APP启动速度慢,如何正确优化?

本文探讨了APP启动慢的原因和分析方法,推荐使用友盟U-APM进行性能检测。主要影响因素包括动态库加载、类数量、+load方法等。提出了pre-main阶段和main()阶段的优化措施,如移除无用库、延迟加载、减少计算等,以提升启动性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于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左右。

  总结

今天的内容就讲解到这里了,其他相关精彩内容我们下期再讲!此外,由于字数有限,友盟的功能只是简单给大家罗列了一小部分,其余功能大家可登录官方网站免费体验!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值