美文网首页
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