App 冷启动:给 Android 的 Activity 添加一个背景
2016/8/8 11:11:18 # 纠错
之前写的这篇内容的知识点有误,给大家造成了误导,深感抱歉。
android 中给 Activity 设置背景的方法是在 style 文件中设置 windowBackground 属性,而非设置 background 属性,如果你设置的是 background 属性,那么抱歉,你可能会遇到下面所说的这种情况: Activity 的 layout 中所有布局控件的背景全变成了 background 所指定的样式。
2016/7/11 14:06:22
最近在做项目优化,其中碰到一个问题:每次应用冷启动的时候,会有一段时间的白屏,这种现象在低端机上更加明显。
为了解决这个问题,我首先是想到怎么做冷启动的优化(应用冷启动这块这里先不展开讲,后面会单独整理出来一篇文章)。冷启动的优化可以从几个方面入手,比如说:在App的Application类的onCreate方法中尽量不要做比较重的操作,包括SharedPreference文件的额初始化等。。另外,可以使应用每次不完全关闭,修改用户返回键的操作,减少应用冷启动的次数(目前微信好像就是这么做的)。
回过头来想一下,在我目前所做的这款App中,冷启动优化要解决的其实就是去除应用在冷启动情况下有一段时间白屏的问题,那么,我们不妨从应用的背景图片来考虑。
首先,设置应用第一个页面的theme,这里我的应用第一个页面是SplashActivity,因此,我再AndroidManifest.xml文件中添加了android:theme的属性。
然后,自定义属性ActivitySplashTheme。我的ActivitySplashTheme继承原来应用的style,在原来的基础上,我添加了一个background属性,并设置相应的背景图片。
<item name="android:background">@drawable/background</item>
到这里就完成了。
什么?!你说你的应用按照这样设置之后,界面出现了意想不到的“效果”,各种布局错乱?!
好吧,看来还是没搞明白style的用法、以及style中background属性的意义。
说一下我的做法吧,在上面说的那些内容修改之后还不行的情况下,我给每个控件都另外添加了background属性
android:background="@android:color/transparent"
比如,设置TextView的background,设置ImageView属性等(大家注意一下ImageView的background属性和src属性,搞清楚他们的区别,这里就不再赘述)。
以上所有的属性设置完毕后,跑一下应用,在冷启动的情况下,应用不会出现白屏的情况,取而代之的是预设的背景图骗。
好啦!到这里,我针对自己项目中App启动出现白屏的问题就已经解决了。方法可能不止一种,如果大家有其他好的方法,也希望能跟我交流。
App 冷启动:给 Android 的 Activity 添加一个背景的更多相关文章
- Android 向系统添加一个联系人信息contact
private void writeContacts() { Uri rawContacts = Uri.parse("content://com.android.contacts/raw_ ...
- Android给ListView添加一个入场动画
动画是一个App体现良好交互的一种手段,通常的我们会看到很多App的ListView的Item都有一个入场动画例如: 可以看到,当进入界面加载ListView的Item的时候有一个向左滑动显示,并且淡 ...
- Android - 分享内容 - 添加一个简单的分享操作
在ActionBar上使用ActionProvider实现一个高效的友好的分享操作在Android 4.0(API等级14)上更容易了.一个ActionProvider,一旦附加到action bar ...
- android 为activity添加optionMenu选项菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...
- android studio Activity标题栏研究
第一次研究时间:2016/7/30,以下研究主要存在于当前最新版本的android studio上.eclipse请参考 一.头部标题取消 当前版本新建工程在 application中默认主题为 an ...
- Android.mk中添加宏定义
在Boardconfig.mk 中添加一个 IS_FLAG := true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ...
- Android.mk中添加宏定义【转】
本文转载自:http://blog.csdn.net/huangyabin001/article/details/38302021 在Boardconfig.mk 中添加一个 IS_FLAG := t ...
- 调用Android自带日历功能(日历列表单、添加一个日历事件)
调用Android自带日历功能 觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...
- 添加一个Android框架层的系统服务与实现服务的回调
2017-10-09 概述 所谓Android系统服务其本质就是一个通过AIDL跨进程通信的小Demo的延伸而已.按照 AIDL 跨进程通信的标准创建一套程序,将服务端通过系统进程来运行实现永驻内存, ...
随机推荐
- 专门讲讲这个MYSQL授权当中的with grant option的作用
对象的owner将权限赋予某个用户(如:testuser1) grant select ,update on bd_corp to testuser1 [with grant option ]1.如果 ...
- 【C++基础之十一】虚函数的用法
虚函数的作用和意义,就不进行说明了,这里主要讨论下虚函数的用法. 1.典型的虚函数用法 可以看到,只有标识为virtual的函数才会产生多态的效果,而且是编译多态.它只能借助指针或者引用来达到多态的效 ...
- 大型分布式C++框架《四:netio之请求包中转站 上》
本来一篇文章就该搞定的.结果要分上下篇了.主要是最近颈椎很不舒服.同时还在做秒杀的需求也挺忙的. 现在不能久坐.看代码的时间变少了.然后还买了两本治疗颈椎的书.在学着,不过感觉没啥用.突然心里好害怕. ...
- N - Picture - poj 1177(扫描线求周长)
题意:求周长的,把矩形先进行融合后的周长,包括内周长 分析:刚看的时候感觉会跟棘手,让人无从下手,不过学过扫描线之后相信就很简单了吧(扫描线的模板- -),还是不说了,下面是一精确图,可以拿来调试数据 ...
- 数据库版本管理工具Flyway(4.0.3)---介绍(译文)
Flyway Evolve your Database Schema easily and reliably across all your instances 简单的.可靠的升级(发展)你的数据库模 ...
- solr全文检索基本原理
场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索方法叫做顺 ...
- iOS打电话、发邮件、发短信、打开浏览器
//1.调用 自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://163@16 ...
- 修改文件权限 chmod
$ chmod u+x file 给file的属主增加执行权限 $ chmod 751 file 给file的属主分配读.写.执 ...
- Java 之 StringTokenizer
class StringTokenizer Object to: break a string into tokens. Contructs StringTokenizer(String str) ...
- 浅述Oracle分布式事务概念
着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加.分布式文件系统.分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛.分布式数据库也是目前使用比较常用的分布式系统之一. 简单来说 ...