Android冷启动白屏问题

本篇文章来自「UartAnd7c」的投稿

原文地址:https://www.jianshu.com/p/9495ba92c138

原作者简书主页:https://www.jianshu.com/u/621bfbc7c878

UartAnd7c 是一个在简书坚持原创的 Android 开发者,欢迎大家关注!

今天把玩公司App发现了一个有趣的现象。启动app白屏。之前没太留意过;在参照大厂App解决白屏的方案后。简单汇总一下。

前言

冷启动:App第一次启动的时候会加载一个Application进程,首先会创建和初始化Appliation类,然后在加载Activity。

热启动:利用后台已经拥有的进程,从而避免了Application的加载。直接去加载Activity。

解决白屏的方案大致有以下四种

加入动画

使用占位图

使用图片

使用windowDisablePreview属性

这里我就描述一下使用占位图和windowDisablePreview属性

windowDisablePreview属性

true

在AndroidManifest中設置主Activity的theme值,在主Activity中还原。

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

setTheme(R.style.AppTheme);

getWindow().setBackgroundDrawableResource(R.drawable.main_splash_bg);

super.onCreate(savedInstanceState);

}

运行后发现启动App延迟几秒后跳转到主Activity(有点类似掌上英雄联盟,会让用户误以为是自己手机的问题)。

使用占位图

@drawable/shape_launch

true

android:opacity="opaque">

android:src="@mipmap/main_splash_bg"

android:gravity="fill"/>

使用windowBackground属性来完成其他操作同windowDisablePreview属性的设置。运行后发现明显白屏问题得到有效解决。

参考文献

gitHub地址:https://github.com/saulmm/onboarding-examples-android#onboarding-with-a-placeholder

google论坛:https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180814G08ZYG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券