前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优化App冷启动,实现启动页错觉秒开

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

作者头像
木溪bo
发布2018-12-27 10:09:28
1.7K0
发布2018-12-27 10:09:28
举报

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.Light.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,解决方法我个人是去掉锁定屏幕设置或者将theme中的透明背景设为不透明。参考传送门

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接下来看看如何优化冷启动:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档