App冷启动白屏/黑屏问题分析及解决方案

一、问题背景

最近在做产品首次启动页优化功能时,发现在点击启动launch图标与切换到子进程页面时会白屏或黑屏一段时间,时间长短根据不同机型性能不一。

原来看过相关文章,借此机会总结一下app启动的闪屏页面是怎么产生的,该如何优化?

二、问题分析

既然我们想要优化app启动速度,那我们肯定要了解app启动的几种模式:冷启动(Cold start),热启动(Warm start),温启动(Lukewarm start)。

只有冷启动是从头开始,其他两种是将应用从后台切换到前台。所以我们基于冷启动的情况进行优化。这样做也可以提高热启动与温启动的性能。

冷启动(Cold start):

在冷启动的时候,系统会开始三个任务:
1. 加载并且启动app
2. 在启动后立即显示一个应用程序的空白窗口(这就是弹出的白屏)
3. 创建app进程

当系统创建应用程序进程,应用程序进程将负责下一阶段。这些阶段是:
1. 创建app 对象
2. 启动主线程
3. 创建主activity
4. inflating views
5. Laying out the screen
6. 执行首次绘制

一旦应用进程完成了首次绘制,系统进程就会替换掉当前显示的背景窗口(白屏/黑屏),将其替换为activity的背景窗口。此时,用户可以开始使用应用程序。下图是冷启动过程流程图:
冷启动流程

热启动(Warm start):

与冷启动相比,热启动应用程序要简单得多,开销更低。在热启动,所有的系统都是把你的activity切换到前台。如果应用程序的activity仍驻留在内存中,那么app不会重复对象初始化,inflating views和重新渲染。

热启动显示与冷启动场景相同的屏幕行为:先显示空白屏幕,直到应用程序完成再渲染activity。

温启动(Lukewarm start):

用户退出您的应用,但随后重新启动它。该过程可能已继续运行&#x

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值