App启动优化

1、冷启动/热启动

2、启动顺序

1.pre-main阶段

1.1.加载应用的可执行文件

1.2.加载动态链接库加载器dyld(dynamicloader)

1.3.dyld递归加载应用所有依赖的dylib(dynamiclibrary 动态链接库)

2.main()阶段

2.1.dyld调用main()

2.2.调用UIApplicationMain()

2.3.调用applicationWillFinishLaunching

2.4.调用didFinishLaunchingWithOptions

3、优化建议

pre_main阶段

1.移除不需要用到的动态库2.移除不需要用到的类3.合并功能类似的类和扩展4.尽量避免在+load方法里执行的操作,可以推迟到+initialize方法中。

main阶段

* 日志、统计等必须在 APP 一启动就最先配置的事件

* 项目配置、环境配置、用户信息的初始化 、推送、IM等事件

* 其他 SDK 和配置事件

梳理各个三方库,找到可以延迟加载的库,做延迟加载处理,比如放到首页控制器的viewDidAppear方法里。

梳理业务逻辑,把可以延迟执行的逻辑,做延迟执行处理。比如检查新版本、注册推送通知等逻辑。

避免复杂/多余的计算。

避免在首页控制器的viewDidLoad和viewWillAppear做太多事情,这2个方法执行完,首页控制器才能显示,部分可以延迟创建的视图应做延迟创建/懒加载处理。

采用性能更好的API。

首页控制器用纯代码方式来构建。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文分为理论【1-4】和实践【5-6】两部分: main()函数之前发生了什么 Mach-O格式 虚拟内存基础知识...
    WSJay阅读 4,540评论 0 1
  • 1.App启动过程 解析Info.plist加载相关信息,例如如闪屏沙箱建立、权限检查 Mach-O加载如果是胖二...
    音符上的码字员阅读 5,092评论 0 4
  • 技术调研 启动时间计算公式 App总启动时间 = t1(main()之前的加载时间) + t2(main()之后的...
    Jorunk阅读 4,647评论 0 0
  • 参考转自:https://mp.weixin.qq.com/s?__biz=MzA5NzMwODI0MA==&mi...
    David_Do阅读 2,540评论 0 1
  • 一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优...
    eclipse_xu阅读 10,544评论 7 95

友情链接更多精彩内容