美文网首页
App启动速度优化

App启动速度优化

作者: 安心做个笨男孩 | 来源:发表于2020-07-27 15:16 被阅读0次

目的:

app启动速度提升,有助于提高用户的体验。

成效:

通过检测App启动速度从4s提升到2s。

方案:

主要针对冷启动进行优化

App启动分析

一般情况下,App 的启动分为冷启动和热启动。

  • 冷启动是指, App 点击启动前,它的进程不在系统里,需要系统新创建一个进程分配给它启动的情况。这是一次完整的启动过程。
  • 热启动是指 ,App 在冷启动后用户将 App 退后台,在 App 的进程还在系统里的情况下,用户重新启动进入 App 的过程。

整个启动过程分为:
1、main() 函数执行前
2、main() 函数执行后
3、首屏渲染完成后

main() 函数执行前

  • 加载可执行文件
  • 加载动态库
  • 初始化,+load方法。
  • Objc 运行时的初始处理,包括 Objc 相关类的注册、category 注册、selector 唯一性检查等;

对应优化方式:

  • 减少动态库加载:项目中会用到第三方库,牵涉到部分系统动态库导入,而随着第三方库的更新,iOS系统的更新,废弃的库需要及时删除。
  • 减少启动后不去使用的类和方法,不仅能优化启动速度同时能减少包大小。
  • +load方法的内容可以用+initialize方法代替,或者+load方法的内容放在首屏渲染完成后执行。

main() 函数执行后

main() 函数执行后的阶段,指的是从 main() 函数执行开始,到 appDelegate 的 didFinishLaunchingWithOptions 方法里首屏渲染相关方法执行完成。

主要包括:首屏渲染需要做的文件读写,数据读取,大量计算。

屏渲染完成后

这个时候用户能看到首屏界面,这个阶段需要注意的是将会卡住主线程的方法处理掉,不能影响用户交互为主。

app启动时间的监测

Xcode中,Product->Scheme->Edit Scheme->Environment Variables
设置:key:DYLD_PRINT_STATISTICS value:1
可以监测app启动时间

TimeProfiler监测耗时函数

Instruments->TimeProfiler监测耗时函数

1、设置profile为debug模式
2、Build Settings->Build Options->Debug Infomation Format 中设置debug下为DWARF with dSYM File。这样设置就可以看到具体方法名而不是十六进制的地址。

相关文章

网友评论

      本文标题:App启动速度优化

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