阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 2320|回复: 0

你所不知道的Andorid启动页(欢迎界面)

[复制链接]

4208

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126078
QQ
发表于 2017-2-17 16:42:49 | 显示全部楼层 |阅读模式
序言:今天老大让我去找UI要一张启动页的图,然后给项目加个启动页,放进去之后也没管那么多,后来运行项目的时候发现有点瑕疵,来看下图:


可能有人要问了,这不是挺好的一个欢迎界面吗?有啥问题,我相信看的仔细的看官会发现启动之后有一段时间是空白的,即使是很短,让人看着也不舒服,这时候可能又有人说了,那可能是你在application里面干了耗时的事才导致的,话说我一开始也是这样觉得的,然后我令写一个demo作测试,发现然而并不关你的application什么事儿,因为我都没有application,启动的时候依然有这样的问题,然后我就去对比我手机上腾讯公司和其他公司的产品,我发现他们的app大多是在你手指按下桌面图标的时候,先"静止"一段时间,然后再启动,而且中间一点白色的间隙也没有,这是什么鬼,带着疑惑,我去百度了一番,发现问题还真有:


后来我才之后,原来有冷热启动这一说:
1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
特点:冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。
2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。
特点:热启动因为会从已有的进程中来启动,所以热启动就不会走application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化application,因为一个应用从新进程的创建到进程的销毁,application只会初始化一次。
既然上述问题不是出在application,那么肯定就是在Activity了,我是这么想的,然后我就想着是不是SetContentView的时候花了很多时间呢?然后我又测试了一遍:
  
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3.     super.onCreate(savedInstanceState);
  4.     long startTime = System.currentTimeMillis();
  5.     setContentView(R.layout.activity_start);
  6.     Log.d(TAG, "time===" + (System.currentTimeMillis() - startTime));
  7. }
复制代码

然后打印出来的时间是:


哈,果真是setContentView导致的,那就很好解决了,我们不要setContentView就好了,可能还有人要问了,你不要setContentView你咋加载布局呢?别急,别忘了还有theme这个好东西啊!我们可以定义一个theme,然后给theme设置背景就好了:
  1. <style name="StartTheme" parent="AppTheme">
  2.     <item name="android:windowBackground">@mipmap/icon_splash</item>
  3. </style>
复制代码


好了,大功告成,我们来看看效果:


注:setContentView的内部原理有兴趣的同学可以自己去百度看看,看看在哪里耗时了

问题:

提个建议:当初我也尝试过是这么做的,但有个问题,图片的内存会释放不掉,所以放在activity的super调用前,用流资源方式加载图片,设置到window的背景中去就好了

原文地址:
http://www.jianshu.com/p/33a798ac3298

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法
http://blog.csdn.net/zivensonice/article/details/51691136
0

捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-3-29 08:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表