一、什么是冷启动?
冷启动冷启动的定义/冷启动和热启动的区别/冷启动时间的计算
冷启动的定义:就是在启动应用前,系统中没有该应用的任何进程信息
热启动的定义:用户使用返回键退出应用,然后马上又重新启动应用
冷启动与热启动的区别
特点
冷启动的特点:先会创建和初始化Applaction类再创建和初始化MainActivity类进行一些布局的测量绘制等等再显示到界面上
热启动的特点:因为会从已有的进程启动,所以热启动就不会走Applaction这个类了而是直接走MainActivity这个类进行布局的测量和绘制.(只需要创建和初始化MainActivity就够了)
冷启动时间的计算
这个时间值从应用启动(创建进程)开始计算,到完成视图的第一次绘制(即Activity内容对用户可见
二、冷启动流程
四个流程
Zygote进程中fork创建出一个新的进程
创建和初始化Application类、创建MainActivity类
nflate布局、当onCreate/onStart/onResume方法都走完
contentView的measure/layout/draw显示在界面上
总结
Application的构造器方法--->attachBaseContext()--->onCreate()--->Activity的构造方法--->onCreate()--->配置主题中背景等属性--->onStart()--->onResume()--->测量布局绘制显示在界面上
三、如何对冷启动的时间进行优化
1.减少 onCreate() 方法的工作量
2.不要让 Application 参与业务的操纵
3.不要再 Application 进行耗时操作
4.不要以静态变量的方式再 Application 中保存数据
5.布局(减少布局复杂性,布局的深度)/ mainThread(通过懒加载延迟所有的初始化)
网友评论