一 什么是冷启动
只要APP的状态是未打开状态(包括不在后台),此时点击桌面图标启动应用的过程就是冷启动。
二 冷启动的表现形式
点击图标后出现了短暂的白屏,然后才显示了主页面的内容,虽然时间很短,但是很影响体验。
三 解决方法
-
减少冷启动的时间
这个问题等同于如何减少应用初始化的时间,从上面的APP启动流程中,如果我们在应用初始化的操作越多,那么从初始化到绘制的时间越长,用户看到真实界面的时间也就越长,可以从如下几个方面进行:1.1 减少在 Application 中的耗时操作(懒加载)
1.2 减少在 onCreate 的耗时操作 -
适配冷启动
2.1 纯色背景 + 启动图标,简单的来说就是用 layer-list 绘制一个纯色的背景加上一个启动图标,layer-list 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" />
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher" />
</item>
</layer-list>
然后我们为SplashActivity创建一个主题:
<resources>
<!-- 基本主题 -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--纯色加启动图标的方案-->
<style name="SplashThemeLayer" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/bg_splash_layer_list</item>
</style>
</resources>
最后为 SplashActivity设置主题为 SplashThemeLayer 在启动看看效果吧。
2.2 使用背景图片
前面的第一种方式是使用纯色背景 + 启动图标,这种方式肯定是不满足我们的产品经理的,他们要的是 个性化 的页面。
使用背景图片也是很简单的,只需要在theme里面将我们之前的drawable替换成我们的图片即可,需要注意的是:Splash页面的背景颜色需要设置为透明 #00000000,不要设置其他背景,否则会导致图片的伸缩变形。
网友评论