• 从用户点击图标开始,到用户看到第一帧图像,都经历了哪些过程。 iOS


    详细回顾下整个启动过程,以及各个阶段耗时的影响因素:

    1. 点击图标,创建进程
    2. mmap 主二进制,找到 dyld 的路径
    3. mmap dyld,把入口地址设为_dyld_start
    4. 重启手机/更新/下载 App 的第一次启动,会创建启动闭包
    5. 把没有加载的动态库 mmap 进来,动态库的数量会影响这个阶段
    6. 对每个二进制做 bind 和 rebase,主要耗时在 Page In,影响 Page In 数量的是 objc 的元数据
    7. 初始化 objc 的 runtime,由于闭包已经初始化了大部分,这里只会注册 sel 和装载 category
    8. +load 和静态初始化被调用,除了方法本身耗时,这里还会引起大量 Page In
    9. 初始化 UIApplication,启动 Main Runloop
    10. 执行 will/didFinishLaunch,这里主要是业务代码耗时
    11. Layout,viewDidLoad Layoutsubviews 会在这里调用,Autolayout 太多会影响这部分时间
    12. Display,drawRect 会调用
    13. Prepare,图片解码发生在这一步
    14. Commit,首帧渲染数据打包发给 RenderServer,启动结束
     

    作者:字节跳动技术团队
    链接:https://juejin.cn/post/6887741815529832456
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    键盘过滤驱动
    多线程和多进程的差别(小结)
    Android UI设计规则
    怎样使用SetTimer MFC 够具体
    Chord算法(原理)
    POJ 1384 Piggy-Bank 背包DP
    Bulk Insert命令具体
    hibernate官方新手教程 (转载)
    教你用笔记本破解无线路由器password
    转换流--OutputStreamWriter类与InputStreamReader类
  • 原文地址:https://www.cnblogs.com/huangzs/p/15124447.html
Copyright © 2020-2023  润新知