美文网首页
APP启动优化-结合instrument

APP启动优化-结合instrument

作者: 柚子_童鞋 | 来源:发表于2025-04-28 11:03 被阅读0次

关键词:APP启动优化、 APP Launch、 Instrument

Q1. APP启动有哪几种?

  • 冷启动;
  • 热启动;
  • 继续执行(resume);

我们主要关注的是冷启动,也就是我们在手机桌面上点击了icon那一刻起 —> APP呈现首屏画面 这个过程所消耗的时间;

Q2.APP的启动过程分为几个阶段?

instrumentAPP launch 面板来看:分为3个阶段
阶段一:初始化(紫色线条部分)
1.1 创建进程 — create process
1.2 接口初始化 — system interface initialization 动态库的加载;
1.3 runtime初始化 — static runtime initialization类的初始化;
阶段二:启动阶段(绿色线条部分)
2.1 UIKit初始化;
2.2 APP Delegate的执行;
2.3 首屏渲染 — initial first frame
阶段三:APP前台活跃(蓝色线条部分)

Q3.APP启动的时间,合格时间是多少?

  • 初始化阶段:0-100ms之间;
  • 启动阶段:100-400ms之间,也就是300毫秒以内;

Q4.APP启动优化可以从哪些方面入手?

1.1 创建进程
  • 创建进程阶段由系统处理,此阶段可以忽略;
1.2 接口初始化阶段:
  • 随着项目发展定期清理无用的动态库;
  • 链接的动态库数量控制在8个以内;
  • 当依赖的三方库太多尝试合并依赖库;
1.3 runtime初始化阶段;
  • 针对load方法的代码,能写在init方法内的代码,尽量写在init方法内(搭配dispatch_once_token);
  • 定期清理项目中一些无用的类和方法;
2.2 APP delegate阶段,当 willFInishLaunchdidiFinishLaunch 这两个方法执行完毕才算执行完毕,因此可做的操作如下:
  • 以上两个方法内的业务代码可根据情况适当defer
  • 比如:友盟的社会化分享,并不是首页所需要的,可以适当延迟注册;
2.3 首屏渲染阶段 viewDidLoadviewWillAppear 方法执行完毕之后才会呈现首屏内容,因此:
  • 我们可以将首页要展示但是不是首屏所要展示的内容放在 viewDidApper 方法内部;
  • 一些APP delegate 阶段需要做的工作也可以放在 viewDidApper 方法内部;
附Instrument的AppLaunch工作面板图: Instrument的AppLaunch工作面板图.jpg

参考文档:Optimizing App Launch

《end》

相关文章

网友评论

      本文标题:APP启动优化-结合instrument

      本文链接:https://www.haomeiwen.com/subject/mxbtijtx.html