本篇记录Android 开发常见的一个优化点:冷启动优化。冷启动也就是应用本来没有启动,这时我们点击桌面图标或者使用adb启动应用。
问题:我们在桌面点击某些app图标时会感觉卡顿了一下才弹出app启动页,或者启动时先白屏或黑屏一会才显示启动页。这样给用户的体验不太好。
优化方法1:
定义一个启动页专用的主题:
<style name="AppStartTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
这样启动时会给启动页一个透明的主题,可以解决启动时先白屏或黑屏一会才显示启动页。但是还是会有一点卡顿的效果。可以把应用的一些非必须的初始化做延迟处理。不要在application和启动页的oncreate中做太多的耗时操作。
启动时间测试方法:adb shell am start -W packageName/IndexActivity 替换自己的包名和启动页
优化方法2:
给启动页设置一个图片做主题,这个图片就是app启动页背景图:可以直接使用图片,也可以使用layer-list形式的布局。推荐使用layer-list,屏幕适配好。
<style name="AppStartTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--冷启动时间更慢 但是点击图标是立即打开视觉效果-->
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/index1</item>
</style>
在启动页的oncreate中不要再设置contentview,只使用主题中背景图片。这种方法使用adb测试启动时间比方法1要耗时多,但是点击图标是立即打开的效果,没有卡顿也不会有白屏和黑屏。市场上一些秒开的app也是这么做的。