不知道大伙有没有发现,应用第一次启动的时候一般比较慢(低配置手机尤其如此),黑屏好一段时间,下面是我在模拟器中启动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. xpath相关巩固

    python爬虫xpath的语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 ...

  2. redis_NoSql入门概述

    一.为什么要使用Nosql 今天我们可以通过第三方平台(如:google,facebook)可以很容易的访问和抓取数据.用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加. ...

  3. 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)

    2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...

  4. POJ 1509 Glass Beads 后缀自动机 模板 字符串的最小表示

    http://poj.org/problem?id=1509 后缀自动机其实就是一个压缩储存空间时间(对节点重复利用)的储存所有一个字符串所有子串的trie树,如果想不起来长什么样子可以百度一下找个图 ...

  5. OpenSSL Heartbleed “心脏滴血”漏洞简单攻击示例

    OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一把. 单纯从攻击的角度讲,我已知道的,网上公开的扫描工具有: 1.  Nmap脚本ssl-heartblee ...

  6. poj 1456 贪心+STL

    题意:有n个商品,每个商品如果能在截止日期之前售出就会获得相应利益,求能获得的最大利益 一开始对每个时间进行贪心,后来发现后面的商品可以放到之前来卖,然后就wa了 这里就直接对价格排序,把物品尽量放到 ...

  7. 1089 Intervals(中文版)

    开始前先讲几句废话:这个题我开始也没看懂,后来借助百度翻译,明白了大概是什么意思. 试题描述 输入一个n,然后输入n组数据,每个数据有两个数,代表这个闭区间是从几到几.然后看,如果任意两个闭区间有相重 ...

  8. redis实现简单延时队列(转)

    继之前用rabbitMQ实现延时队列,Redis由于其自身的Zset数据结构,也同样可以实现延时的操作 Zset本质就是Set结构上加了个排序的功能,除了添加数据value之外,还提供另一属性scor ...

  9. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟

    D. Little Artem and Dance 题目连接: http://www.codeforces.com/contest/669/problem/D Description Little A ...

  10. CSS的outline属性

    input标签的outline的三个属性: outline-color outline-style outline-width 当设置input的focus状态的时候可以使用. input:focus ...