Android 冷启动,优化app启动速度(视觉上提高启动速度)
###一 介绍:
默认情况下,当app启动时候会出现一小段时间的空白现象。
出现这种现象的原因:
- 当用户点击一个没有执行过的应用后到执行Activity.onCreat() 这个时间会比较长,还会出现白色的背景现象。这是因为当启动一个应用,系统会先解析启动Activity的Theme,根据里面的元素绘制出一个初始的界面,如主题定义的状态栏颜色和窗口的背景,当系统加载完所有的资源并启动Activity的onCreate()之后,然后再把初始界面替换为Activity的实际layout的界面
###使用:
-
首先在style.xml 中定义一个新的主题
<style name="AppTheme.Launcher"> <item name="android:windowBackground">@drawable/launch_screen</item> </style>
-
launch_screen.xml :
android:opacity="opaque" :防止出现闪屏现象<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <item android:drawable="@android:color/white"/> <item> <bitmap android:src="@drawable/googlelogo" android:gravity="center"/> </item> </layer-list>
<bitmap android:src="@drawable/googlelogo" android:gravity="center"/>
:设置预览图 -
将需要启动的activity的Theme设置为
<activity android:name=".MainActivity" android:theme="@style/AppTheme">
-
最后在activity的
setContentView(R.layout.activity_main);
之前设置setTheme(R.style.AppTheme);
即可。 ###优点: 相比传统的Splash界面: -
没有另外的activity需要加载,这是利用系统特性来实现的一个启动界面
-
不需要消耗额外的系统资源启动速度更快,首次启动不会出现白屏现象,体验更好
######还可以使用一个.9的toolbar作为windowBackground的背景,可以实现一个先加载背景,后加载页面数据的冷启动