当你看到爱奇艺,支付宝等大厂APP点击图标秒开的时候,感觉产品体验非常棒,纵享丝滑,回头再看看自己的APP,先白屏晾你一会,顿时是不是感觉心里不爽了:为啥别人的产品那么效果那么好呢(千万不要找借口说人家是大厂 技术很牛逼,的确有部分原因 但是这就是你不做启动优化的理由?) 性能优化对于我们开发来说尤为重要,毕竟一个好的产品和所带来的收益是相辅相成的,同时这也是咱们技术所追求的,毕竟干一行爱一行嘛!
上效果图:
android启动分为冷启动和热启动,
-
冷启动:
在启动应用时,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用; -
热启动:
在启动应用时,系统中已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程还是保留在后台);
启动优化有很多种 我也就不一一列举了,这里我只讲我项目中用到的优化方案:替换window背景
首先:在AndroidManifest的 application中设置他的theme
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textAllCaps">false</item>
<item name="android:textCursorDrawable">@null</item>
<item name="android:windowDisablePreview">false</item>
<item name="android:windowBackground">@drawable/launcher</item>
<item name="android:navigationBarColor" tools:ignore="NewApi">@android:color/transparent
</item>
<item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
<item name="android:windowNoDisplay">false</item>
</style>
这个@drawable/launche 是我写的一个xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/window_bg" />
</item>
</layer-list>
这个window_bg 就是你设置你的启动页背景,这样APP就不会出现闪白屏问题了,但是问题来了,如果放一张图片的话,图片铺满肯定会变形,而在这个xml里是没有scaleType属性的,所以不能说android所有分辨率都各切一张图吧,当然这就不用了(但是你想的话其实也可以试试,反正我不会那样做),比如:soul,Twitter等都是背景纯色然后这个xml里放一个图标就解决了,还有一种方案就是这张启动图直接用.9,就解决拉伸问题了。
有什么疑问可以私聊我!