Optimizing App Launch - WWDC19 2024-03-13

  1. Launch概念
    1. warm launch
    2. cold launch
    3. resume
  2. 启动阶段


    Phases of App Launch启动阶段.png
  3. demo
    1. 使用profile,app launch,record进行时间录制,逐步分析。
    2. 优化前2.4s,优化后0.3s
    3. 优化内容
      1. initialize - static runtime initialization
        1. 问题:Logger类,写了个复杂的load方法,load方法执行时间在main之前
        2. 解决方案:去除整个framework,xcode移除该framework。(也可以是将load内的内容,放到initialize方法中去)
      2. Launching - didFinishLaunchingWithOptions()
        1. 问题:在didFinishLaunchingWithOptions内,等待子线程执行完,子线程初始化了所有数据,且处理较慢
        2. 解决方案:只在didFinishLaunchingWithOptions初始化一部分数据,而且不等待子线程。
      3. Launching - initialFrameRendering
        1. 问题:首屏的界面涉及UITableView,涉及cellForRow方法,cellForRow里,加载了详情页的页面,太重了。
        2. 解决方案:去掉cellForRow对子页面的提前加载,改时机。
    4. xctest
      1. 多次启动的效果
  4. 前后效果

参考文章

Optimizing App Launch - WWDC19 - Videos - Apple Developer

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容