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 跨进程通信的标准创建一套程序,将服务端通过系统进程来运行实现永驻内存, ...
随机推荐
- day03_javaEE四成结构
- Kcptun 是一个非常简单和快速的,基于KCP 协议的UDP 隧道,它可以将TCP 流转换为KCP+UDP 流
本博客曾经发布了通过 Finalspeed 加速 Shadowsocks 的教程,大家普遍反映能达到一个非常不错的速度.Finalspeed 虽好,就是内存占用稍高,不适合服务器内存本来就小的用户:而 ...
- rsyslog Properties 属性:
rsyslog Properties 属性: 数据项 在rsyslog 是被称为 "properties". 它们可以有不同的源, 最重要的是 那些来自接收的消息,但是还有其他. ...
- jetty插件配置
1.jetty maven 插件启动设置: Base directory:${project_loc} Goals:clean -Djetty.port=8080 jetty:run 2.jetty ...
- 数据库版本管理工具Flyway(4.0.3)---介绍(译文)
Flyway Evolve your Database Schema easily and reliably across all your instances 简单的.可靠的升级(发展)你的数据库模 ...
- 在Build时使用NuGet自动下载缺失的包
现在使用.net编程,不可避免的总会使用到NuGet去下载引用第三方的dll,而且vs2012也直接默认就会安装上NuGet了.NuGet的确也给我们带来了一些方便,但是也带来了一些问题,比如:一般程 ...
- 遍历Jenkins全部项目的配置
随着任务的增多.须要一个脚本能够检查全部的jenkins project的配置.比方提取任务计划配置,开发人员信息等. 首先要能够得到全部的project名称. 能够通过REST API实现: htt ...
- FIR滤波器设计
FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...
- mysql 建立加密连接
加密连接可提高数据的安全性,但会降低性能.要进行加密连接,必须满足以下要求: user权限表里要有相关的SSL数据列.如果安装的MySQL服务器是4.0.0版的,user权限表已包含相关的SSL数据列 ...
- 内容提供者 DocumentProvider Uri工具类
Activity /**详见http://blog.csdn.net/coder_pig/article/details/47905881 Calendar Provider:日历提供者,就是针对针对 ...