美文网首页
APP的冷启动与热启动,你知道吗?

APP的冷启动与热启动,你知道吗?

作者: M_Codes | 来源:发表于2022-05-16 10:45 被阅读0次

介绍一下 app 冷启动和热启动方式来实现 app 秒开的效果。那么,先来看看什么叫冷启动和热启动。

1.app冷启动

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

2.app热启动

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

3.冷启动的流程

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

4.冷启动的生命周期简要流程:

Application构造方法 –> attachBaseContext()–>onCreate –>Activity构造方法 –> onCreate() –> 配置主体中的背景等操作 –>onStart() –> onResume() –> 测量、布局、绘制显示

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

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

  • 不要让 Application 参与业务的操作

  • 不要在 Application 进行耗时操作

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

  • 减少布局的复杂度和层级

  • 减少主线程耗时

5.冷启动的其他问题及解决方案

为什么冷启动会有白屏黑屏问题?原因在于加载主题样式Theme中的windowBackground等属性设置给MainActivity发生在inflate布局当onCreate/onStart/onResume方法之前,而windowBackground背景被设置成了白色或者黑色,所以我们进入app的第一个界面的时候会造成先白屏或黑屏一下再进入界面。解决思路如下

1.给他设置 windowBackground 背景跟启动页的背景相同,如果你的启动页是张图片那么可以直接给 windowBackground 这个属性设置该图片那么就不会有一闪的效果了

<style name=``"Splash_Theme"` `parent=``"@android:style/Theme.NoTitleBar"``>`

    <item name=``"android:windowBackground"``>@drawable/splash_bg</item>`

    <item name=``"android:windowNoTitle"``>``true``</item>`

</style>

2.采用世面的处理方法,设置背景是透明的,给人一种延迟启动的感觉。,将背景颜色设置为透明色,这样当用户点击桌面APP图片的时候,并不会"立即"进入APP,而且在桌面上停留一会,其实这时候APP已经是启动的了,只是我们心机的把Theme里的windowBackground 的颜色设置成透明的,强行把锅甩给了手机应用厂商(手机反应太慢了啦)

<style name=``"Splash_Theme"` `parent=``"@android:style/Theme.NoTitleBar"``>`

    <item name=``"android:windowIsTranslucent"``>``true``</item>`

    <item name=``"android:windowNoTitle"``>``true``</item>`

</style>

3.以上两种方法是在视觉上显得更快,但其实只是一种表象,让应用启动的更快,有一种思路,将 Application 中的不必要的初始化动作实现懒加载,比如,在SpashActivity 显示后再发送消息到 Application,去初始化,这样可以将初始化的动作放在后边,缩短应用启动到用户看到界面的时间

相关文章

  • APP冷启动优化

    一、APP启动分为冷启动和热启动 1、冷启动 - APP从0-1的启动 2、热启动 - APP在后...

  • 508,iOS App启动优化(面试点:冷启动:App点击启动前

    本篇将介绍App的两种启动方式:“冷/热启动”、App完整启动流程以及“优化思路”。 一、“冷启动”与“热启动” ...

  • App 冷启动与热启动及启动白屏优化

    介绍一下 app 冷启动和热启动方式来实现 app 秒开的效果。那么,先来看看什么叫冷启动和热启动。 冷启动:指 ...

  • iOS 启动优化(一)

    “冷启动”与“热启动” 主要区别: 名称区别冷启动启动时,App的进程不在系统里,需要开启新进程。热启动启动时,A...

  • 关于App启动速度优化

    冷启动、热启动 冷启动:App启动前,它的进程不在系统里,系统新创建一个进程分配给它启动;热启动:App冷启动后,...

  • iOS性能(二) 启动时间优化

    冷启动 与 热启动 热启动:如果你刚刚启动过App,这时候App的启动所需要的数据仍然在缓存中,再次启动的时候称为...

  • App 冷启动与热启动及启动白屏优化

    介绍 我们介绍一下app冷启动和热启动方式来实现app秒开的效果。那么,先来看看什么叫冷启动和热启动。 冷启动:指...

  • app性能优化

    app启动 app启动分为两种:冷启动和热启动(冷启动就是App被重新打开,热启动就是从后台到前台,启动优化主要是...

  • iOS App 启动速度优化

    理解App启动 App启动从技术角度可以分为冷启动和热启动。冷启动是App启动时需要系统分配进程的启动操作;热启动...

  • iOS启动优化

    iOS App启动优化 iOS启动可分为冷启动和热启动两种冷启动:app为kill状态下点击app启动热启动:ap...

网友评论

      本文标题:APP的冷启动与热启动,你知道吗?

      本文链接:https://www.haomeiwen.com/subject/rsdburtx.html