一、App的启动模式

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

二、App冷启动的优化

用户感知启动慢,应该都发生在主线程上。其原因有很多,比如:在主线程上执行大文件读写操作、在渲染周期中执行了大量计算等。

App的启动主要包括三个阶段:

  1. main() 函数执行前(加载可执行文件、加载动态链接库...);
  2. main() 函数执行后(首屏初始化所需配置文件的读写操作、首屏列表大数据的读取、首屏渲染的大量计算...);
  3. 首屏渲染完成后(非首屏其他业务服务模块的初始化、监听的注册、配置文件的读取等)。

三、两种级别的启动优化

  • 功能级别的启动优化:main() 函数开始执行后到首屏渲染完成前只处理首屏相关的业务,其他非首屏业务的初始化、监听注册、配置文件读取等都放到首屏渲染完成后去做。
  • 方法级别的启动优化:进一步检查首屏渲染完成前主线程上的耗时方法,将没必要的耗时方法滞后或异步执行。

四、监控App启动速度

定时抓取主线程上的方法调用堆栈,计算一段时间里各个方法的耗时。

(本文内容来自戴铭专栏)

最新文章

  1. Kooboo CMS 无聊随笔(2)
  2. salt yum安装lamp
  3. Firefox上Web开发工具库一览
  4. 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
  5. Storm集群安装详解
  6. React vs Angular 2: 冰与火之歌
  7. Python可视化库Matplotlib的使用
  8. SKCTF Writeup
  9. 基于Keil软件的MCU环境搭建
  10. 前端的图片压缩image-compressor(可在图片上传前实现图片压缩)
  11. Delphi使用iTools安卓模拟器
  12. USB接口案例——多态和转型
  13. TensorFlow-实战Google深度学习框架 笔记(上)
  14. python基础一数据类型之列表
  15. linux c中select使用方法
  16. 关于51精确延时及keil仿真延时时间
  17. kue
  18. CommonLang3 --StringUtils使用指南
  19. Java Collection.Map
  20. Java-Maven-Runoob:Maven环境配置

热门文章

  1. Comparable比较器和Comparator比较器
  2. python全栈开发_day10_函数的实参和形参
  3. vue,下级页面刷新导致路由跳转带过来的数据消失的解决方法
  4. SS7
  5. oracle 行列转换函数之WM_CONCAT和LISTAGG的使用(一)
  6. saltstack源码详解一
  7. C# 获取类名
  8. Oracle 删除监听程服务
  9. selenium+Python(表单、多窗口切换)
  10. mysql 优化常用语句