• 热启动和冷启动是什么,区别


    app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

    app热启动: 当应用已经被打开, 但是被按下返回键、Home键等按键时回到桌面或者是其他程序的时候,再重新打开该app时, 这个方式叫做热启动(后台已经存在该应用进程)。热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application

    冷启动的流程
    当点击app的启动图标时,安卓系统会从Zygote进程中fork创建出一个新的进程分配给该应用,之后会依次创建和初始化Application类、创建MainActivity类、加载主题样式Theme中的windowBackground等属性设置给MainActivity以及配置Activity层级上的一些属性、再inflate布局、当onCreate/onStart/onResume方法都走完了后最后才进行contentView的measure/layout/draw显示在界面上

    冷启动的生命周期简要流程:
    Application构造方法 –> attachBaseContext()–>onCreate –>Activity构造方法 –> onCreate() –> 配置主体中的背景等操作 –>onStart() –> onResume() –> 测量、布局、绘制显示

    冷启动的优化主要是视觉上的优化,解决白屏问题,提高用户体验,所以通过上面冷启动的过程。能做的优化如下:

    (1)减少 onCreate()方法的工作量

    (2)不要让 Application 参与业务的操作

    (3)不要在 Application 进行耗时操作

    (4)不要以静态变量的方式在 Application 保存数据

    (5)减少布局的复杂度和层级

    (6)减少主线程耗时

  • 相关阅读:
    结构工程师软件 Naviate Core MEP for Revit 3.4 Crk
    开发工程师必备————【Day16】数据库知识补充
    【开源分享】基于Html开发的房贷计算器,模仿新浪财经
    SpringBoot 03 Yaml语法、松散绑定和JSR303数据校验
    设计模式① :适应设计模式
    【Koa】【MongoDB】koa框架连接MongoDB
    Vue.js 条件判断
    如何制作一篇公众号推文?纯干货
    Eureka快速入门
    【Leetcode】152. 乘积最大子数组
  • 原文地址:https://blog.csdn.net/qq_45756499/article/details/132966726