您当前的位置:首页 > Bug笔记

Android冷启动优化及启动白屏解决方案

时间:2022-09-02 19:25:07 阅读数:13,571人阅读
版权声明:转载请注明出处,谢谢!
—— 这个世界,一百万人里面只有一个主角。当主角的都是能够达到极致的人。

1. 什么是冷启动?

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

2. 什么是热启动?

当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。它的特点就是热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application,因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

冷启动的流程&优化

冷启动的流程

在冷启动的最开始,系统需要负责做三件事:

  • 1)加载以及启动app
  • 2)app启动之后立刻显示一个空白的预览窗口
  • 3)创建app进程

一旦系统完成创建app进程后,app进程将要接着负责完成下面的工作:

  • 1)创建Application对象
  • 2)创建并且启动主线程ActivityThread
  • 3)创建启动第一个Activity
  • 4)Inflating views
  • 5)布局屏幕
  • 6)执行第一次绘制

从冷启动的流程看,我们无法干预app进程创建等系统操作,我们能够干预的有:

  • 1)预览窗口
  • 2)Application生命周期回调
  • 3)Activity生命周期回调

冷启动的优化

1)预览窗口

为什么启动时会出现短暂黑屏或白屏的现象?当用户点击你的app那一刻到系统调用Activity.onCreate()之间的这个时间段内,WindowManager会先加载app主题样式中的windowBackground做为app的预览元素,然后再真正去加载activity的layout布局。很显然,如果你的application或activity启动的过程太慢,导致系统的BackgroundWindow没有及时被替换,就会出现启动时白屏或黑屏的情况(取决于你的主题是Dark还是Light)。

解决办法:在style中自定义一个主题,在其中放一张背景图片或者广告页,让用户先看默认图。

2)Application onCrate()优化

  • 1. 耗时操作子线程中进行
  • 2. 非必要的初始化可以放到对应的时机加载;

3)Activity onCrate()优化

  • 1. 耗时操作子线程中进行
  • 2. 布局优化比如层次减少;

------转载请注明出处,感谢您对原创作者的支持------

有偿提供技术支持、Bug修复、项目外包、毕业设计、大小作业

Android学习小站

Q Q:1095817610

微信:jx-helu

邮箱:1095817610@qq.com

添加请备注"Android学习小站"