优化App冷启动,实现启动页错觉秒开

APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页。进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,这可能会让用户会以为没有点到APP而再次点击,极大的降低了用户体验,Android需要及时做出反馈去避免这段时间的尴尬。于是系统会根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。这个黑(白)屏就称为Preview Window,即预览窗口。

安卓启动方式一般有3种:

>Coldstart——冷启动:

此种方式最为耗时,一般是因为进程被干掉或者是第一次启动app,系统需要重新fork进程进行一系列初始化,后台没有该应用的进程。

>WarmStart ——暖启动

比ColdStart稍快,当app的Activities被销毁,但还在内存中常驻时启动方式会变为暖启动,app并没有被杀掉,所做的只是把app从后台提到前台来展示,并不需要重走初始化一系列行为,减少了对象初始化、布局加载等工作。但其表现行为与冷启动一致,还是会先显示一个Preview Window(黑白屏)直到app渲染activity。

如果由于响应了低内存事件,例如在onTrimMemory()方法中清除了资源对象,那么这些对象就需要在热启动时重新创建。

>LukeWarm Start——热启动

启动方式最快,比暖启动开销小,类似于按返回键back、home键退出应用又立即进入的那种行为,后台已有该应用的进程。

接下来看看如何优化冷启动:

既然我们已经找到这个黑白屏是出自系统的预览窗口,我们就可以通过操控这个窗口来实现。这个预览窗口是在activity启动页前显示的一个安卓优化措施,我们可以从主题中可以找到,是可以设置这个窗口配置的。

1.更改窗口的颜色背景

2.设置窗口全屏显示

在Manifest文件中的启动页activity添加自定义的主题android:theme="@style/SplashTheme"

接下来看看style的属性配置,父主题可使用parent="@android:style/Theme.NoTitleBar.Fullscreen"

以上name="android:windowBackground”背景你可以设置多种,如果是设置为透明要将<item name="android:windowIsTranslucent">true</item>设置为true,当点击运行app后是透明背景的,给人的一种系统响应慢的错觉,完美甩锅。若是设置一张图片,也要设置<item name="android:windowIsTranslucent">false</item>,即可实现秒开闪屏效果。而我这里是在drawable中新建splashx_bg.xml使用bitmap位图设置的背景图,能够对图片做更多的设置操作。


最后注意:Preview Window设置的背景图如果不做处理,图片就会一直存在于内存中,所以,当我们进入到欢迎页的时候可不要忘了把背景图设置为空

透明背景:

透明背景


位图bitmap加载:

位图bitmap



直接设置图片:

图片


2018/11/2最后补充一下需要注意
:在Android 8.0即api26,谷歌对于AndroidManifest.xml中设置了锁定屏幕android:screenOrientation="portrait"的透明activity会报以下错误“Only fullscreen opaque activities can request orientation”,经测试不管是否全屏都如此,在8.1后谷歌修复了这个bug。解决方法我个人是去掉锁定屏幕设置或者将android:theme="@style/SplashTheme"中的透明背景设置均改为不透明android:windowIsTranslucent改为false 参考传送门,建议采用图层设置位图bitmap的方式易于适配(刘海屏等)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优...
    eclipse_xu阅读 5,173评论 7 95
  • 目录介绍 01.存在白屏问题1.1 问题描述1.2 问题分析 02.解决白屏的办法2.1 解决方案分析2.2 第一...
    杨充211阅读 2,599评论 1 27
  • 一、存在白屏问题 1.1 问题描述 出现问题描述 android app启动页面黑屏的问题,android开发ap...
    一瞬间的浮华阅读 504评论 0 0
  • 大家都遇到过自己 app 启动时间有些长,屏幕白屏的问题吧。一个正常的商业 app 在启动时时会加载一大票组件的初...
    前行的乌龟阅读 3,507评论 0 14
  • 最近好几天都因为琐事没有写文章了,真的很羡慕那些日更,周更的公众号自媒体达人,每日更文且不写烂文,遇到热门新闻...
    seriousNaNa阅读 230评论 2 6