不知道大伙有没有发现,应用第一次启动的时候一般比较慢(低配置手机尤其如此),黑屏好一段时间,下面是我在模拟器中启动QQ的截图,黑屏差不多有5秒左右,如下图所示~



     显然这种结果很糟糕,用户体验非常差,那有没有什么办法解决此问题呢,有的人可能会说用splash screen,但这并不靠谱,也不是解决此问题的办法。

      我们都知道当退出一个应用时,应用的进程并不会被杀死,驻留在后台(有可能被系统杀死),以便下一次能够比较快速的启动应用。但应用第一次启动或者进程被杀死再次启动时其实需要做一系列的事情,首先得分配一个进程,然后在进程中实例化一个Dalvik VM
,接着虚拟机会初始化UI主线程。虽然Android使用Zygote
技术,
但做这些工作还是要花费一定的时间。Android为了能在这段时间内防止应用阻塞和尽快的响应用户,会显示一个临时“starting window”给用户,这个window什么事也不做,不能获取焦点也不能处理用户的触摸

     当你的应用进程初始化好了之后,系统会把这个临时的window移除掉,进而显示应用的窗口和视图。在这之前你的应用是没有运行任何代码的,现在就有一个问题了,系统是如何知道我们的应用要显示成什么样子的呢,是不是这个“starting window”永远都是固定的不可更改的呢,原来系统在加载应用的时候会读取在AndroidManifest.xml中指定的Theme(Application或Activity配置的Theme)来决定“starting window”的样式,如果未配置Theme的话,那么默认的Theme(@android:style/Theme或者@andriod:style/Theme.Holo.Light)会被
使用。

  经过上面的一些分析,我们只需变现自己的Theme并配置在Application或Activity上就可以改变默认的"starting window"的外观,让我们的应用之间的window切换更协调,下面是我写的一个Theme DEMO,并在Application节点上指定此Theme就行了

    <style name ="Theme.Starting.Window" parent= "@android:style/Theme.Holo.Light" >
<item name= "android:actionBarStyle">@style/StartingWindowActionBar</item >
</style > <style name ="StartingWindowActionBar" parent= "@android:style/Widget.Holo.Light.ActionBar" >
<item name ="android:background"> #2E495E</ item>
<item name= "android:titleTextStyle">@style/StartingWindowActionBar.Text </item >
</style > <style name ="StartingWindowActionBar.Text" parent= "@android:style/TextAppearance">
<item name ="android:textColor"> #FFA500</ item>
</style >






     前后两种结果对比可以看出,后者更美观,也更协调。其实Activity之间的切换也会使用到"starting window",只不过时间一般都很短暂,肉眼很难识别出,所以不用做相应的处理。











让Android App启动更协调的更多相关文章

  1. [FMX] Android APP 启动黑屏优化补丁

    使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 201 ...

  2. Android app启动activity并调用onCreate()方法时都默默地干了什么?

    Android app启动activity并调用onCreate() 方法时都默默地干了什么?   在AndroidManifest.xml文件中的<intent-filter>元素中有这 ...

  3. android app启动就闪退怎么办?

    开发过程中,如遇到android app启动就闪退,不要急,直接进入调试模式运行app,就会取得出错的原因. http://blog.sina.com.cn/s/blog_44fa172f0102wg ...

  4. Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

    转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...

  5. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  6. Visual Studio 2015开发Android App启动调试始终无法完成应用部署的解决方案

    创建一个Android App项目后,直接启动调试发现Visual Studio Emulator for Android已成功运行,但应用始终处于Build中(等待时间超过1小时),并未如预期通过a ...

  7. Android app启动是出现白屏或者黑屏如何解决?

    1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...

  8. 033 Android App启动的闪屏效果+新手向导(多个图片滑动效果)+ViewPager使用

    1.目标效果 App启动时,出现闪屏效果(利用动画实现). App新手使用时,会出现新手向导效果. 2.XML页面布局 (1)闪屏页面 <?xml version="1.0" ...

  9. Android app启动出现白屏闪屏

    出现白屏闪屏原因: 进入到AppStartActivity,但是未加载到布局文件,就先显示了窗口的背景,白屏就是显示的windows的背景,即所设置的theme. onCreate()中的setCon ...

随机推荐

  1. misaka and last order SCU - 4489 (筛法的灵活应用)

    Time Limit: 1000 MS Memory Limit: 131072 K Description Misaka Mikoto is a main character of the Anim ...

  2. shell中的条件判断if和测试

    (一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file ...

  3. android 进程优先级

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 前台进程 可见进程 服务进程 后台进程 空进程

  4. Codeforces 1129 D. Isolation

    Codeforces 1129 D. Isolation 解题思路: 令 \(f(l,r)\) 为 \([l,r]\) 中之出现一次的元素个数,然后可以得到暴力 \(\text{dp}\) 的式子. ...

  5. yaf学习

    <?php 安装 phpize ./configure --with-php-config=/usr/local/php/bin/php-config 路由类 final Yaf_Router ...

  6. JDK源码(1.7) -- java.util.Arrays

    java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...

  7. HDU 5652 India and China Origins 二分+并查集

    India and China Origins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5652 Description A long time ...

  8. input输入框限制输入英文,数字,汉字

    <h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...

  9. 如何在Ubuntu中用firefox浏览器查看chm文档?

    首先下载这插 件:在firefox中点击“工具”->“附加软件”->“扩展”,在firefix扩展网页下搜索“"chmfox" 然后安装,重启后就可以了.

  10. 解决WPF中重载Window.OnRender函数失效问题

    今天实验一个绘图算法的时候,偶然发现重载Window.OnRender的方法是没有效果的. public partial class MainWindow : Window { public Main ...