SplishActivity的作用

众所周知,我们很多应用都会有一个SplashActivity,用来当作进入应用的第一个过度界面,显示一个logo信息。如下所示,是我的简洁天气的SplashActivity。

但是,它的作用仅仅只是用来显示一个logo信息吗?这样岂不是太浪费了?答案是肯定的。

其实一开始学习Android的时候,我也以为它的作用仅仅是用来显示logo信息,但是在观察新浪微博、腾讯微博等应用之后,我发现每次显示这个界面的时间会有所不同,网络好的时候感觉不出来,网络不好的时候会停留的时间比较长一点,所以,我可以肯定说:在这个Activity里面,肯定为下一个Activity的出现打好了基础,也就是说预先初始化了一些工具类、加载了一些必要数据。这样的话在下一个Activity很快就可以完整把所有数据展现在用户面前,获取更好的用户体验。

说到这里,也许有的童鞋就会说了,我可以在Application里做这些事情啊,然后直接进入MainActivity,其实这样也是可以的,比如我这个简洁天气最初就是这样做的,但是细心的朋友就会发现,每次进我这个应用的时候,屏幕会黑一段时间,尤其是第一次进入更加明显,其实就是因为我把加载数据的事情放在Application里面,而加载2000多个城市是需要一定时间的。这样就不可避免的会黑一段时间,这样给用户的感觉就没那么亲和了。

OK,铺垫就到这里了,下面切入正题,我们来看看这个简单SplashActivity:

[java] view plaincopy

  1. /** 
  2.  *  
  3.  * @author way  
  4.  * 预先加载数据的SplashActivity 
  5.  *  
  6.  */  
  7. public class SplashActivity extends Activity {  
  8.     private static final int SHOW_TIME_MIN = 3000;// 最小显示时间  
  9.     private long mStartTime;// 开始时间  
  10.   
  11.     private Handler mHandler = new Handler() {  
  12.         public void handleMessage(android.os.Message msg) {  
  13.             switch (msg.what) {  
  14.             case Application.CITY_LIST_SCUESS:// 如果城市列表加载完毕,就发送此消息  
  15.                 long loadingTime = System.currentTimeMillis() - mStartTime;// 计算一下总共花费的时间  
  16.                 if (loadingTime < SHOW_TIME_MIN) {// 如果比最小显示时间还短,就延时进入MainActivity,否则直接进入  
  17.                     mHandler.postDelayed(goToMainActivity, SHOW_TIME_MIN  
  18.                             - loadingTime);  
  19.                 } else {  
  20.                     mHandler.post(goToMainActivity);  
  21.                 }  
  22.                 break;  
  23.             default:  
  24.                 break;  
  25.             }  
  26.         }  
  27.     };  
  28.     //进入下一个Activity  
  29.     Runnable goToMainActivity = new Runnable() {  
  30.   
  31.         @Override  
  32.         public void run() {  
  33.             SplashActivity.this.startActivity(new Intent(SplashActivity.this,  
  34.                     MainActivity.class));  
  35.             finish();  
  36.         }  
  37.     };  
  38.   
  39.     @Override  
  40.     protected void onCreate(Bundle savedInstanceState) {  
  41.         super.onCreate(savedInstanceState);  
  42.         setContentView(R.layout.splash);  
  43.         mStartTime = System.currentTimeMillis();//记录开始时间,  
  44.         Application.getInstance().initData(mHandler);//开始加载数据  
  45.     }  
  46. }  

我这里把加载数据的函数放在Application里面,做一些复制数据库文件,读取数据库城市列表等一些相对比较耗时的事情,这里就不具体说这个加载数据的函数了。因为我们可以根据不同的需求改变这个函数,比如说微博应用就替换成异步请求网络数据等。我这个例子仅是提供一个扩展思路,如果有更好的建议或者批评,欢迎大家给我留言。

时间: 2024-11-05 19:00:02

SplishActivity的作用的相关文章

推荐系统的作用和问题

推荐系统的作用 推荐系统(recommender systems)是利用信息过滤技术向用户推荐其可能感兴趣的信息.http://www.aliyun.com/zixun/aggregation/8086.html">推荐系统是有别于信息分类和信息搜索的信息处理方式. 信息分类是有序的按照时间/主题/类别/用户/任务等方式组织结构化信息,浏览分类信息可以帮助用户理解信息之间的组织方式,但是这种信息的呈现方式是基于用户已知目标信息的所属类别,用户认知事物偏向于模糊无序,难以从有序的信息中发现未

win7系统右下角小旗子强大的作用

合理的利用win7系统在的功能,那么你根本不需要装其他方面的软件,对于新手基本上装个360安全卫士就行了.今天我们要来说的是win7操作中心的功能,也就是win7系统右下角小旗子的强大功能. 1 win7操作中心 在win7操作系统中,当我们把鼠标移到并单击右下角的小旗时,我们就会看到下图: 2 小编感觉功能比较好的就是这个图,它可以提醒我们系统中存在哪些安全隐患,还有那些功能需要维护.很多时候通过这边的设置能让你电脑的可被利用漏洞变得更少,让病毒无法破坏甚至进入你的系统. 3 win7操作中心

在js中加html注释的作用?

问题描述 在js中加html注释的作用? <!-- function getStringLength(str){ var num=0; if (str!=""){ var i; var s; for(i=0;i<str.length;i++){ s=str.charCodeAt(i); if(s-128<0) num=num+1; else num=num+2; } } return num; } //--> 解决方案 就是说这些代码本来应该删除,但是这个程序员

Win8中隐藏分区的作用图文教程

从Windows 7开始,使用裸机全新安装的方法,系统会默认在硬盘开始部分划分出来隐藏分区,大小在100M左右.在Windows 8中,该分区大小为350M,如下图,是我使用Windows 8全新安装之后,系统自己划分的分区情况.(还有15G是用于其他用途了) 可以看出,磁盘管理显示了,350M的分区是具有系统分区,活动分区,主分区的属性,后面那个分区是Windows 8 所在分区,包含了启动,页面文件,故障转储,主分区等属性. 对这个分区点右键,选择"更改驱动器号和路径",点击&qu

路由器、交换机、猫的作用与区别

大家用电脑的时候就能听说,交换机和路由器,路由器大家都见过和用过,交换机却不知道是个什么玩意,这篇文章主要解释一下这两个的区别. 限家用路由器,企业路由器大家用不到,用到的都会用了,先一句话概括路由器与交换机的区别,交换机就是没有自动拨号的路由器. 第一段:猫 第二段:路由器 第三段:路由猫 第四段:交换机 第一段:猫 为什么叫猫,就是Moden,宽带上网调制解调器,我的是光猫,不管是什么猫,都是一条线插进这个设备,然后从这个设备出来一条网线,插到你的电脑上. 你的电脑才能进行拨号上网,有些小区

“无法启动承载网络连到系统上的设备没有发挥作用”怎么办

  [背景介绍] 我用的电脑是Lenovo ThinkPad E420,操作系统版本为:Windows 7 家庭普通版 SP1,处理器为:英特尔酷睿 i5-2450M CPU @ 2.50GHz,内存为:4G. [期望结果] 用该笔记本的无线网卡作为 无线路由器(即 实现wifi功能),便于没有当前没有无线路由器的环境下能够共享网络,同时上网. [操作方法] 在"开始"按钮的"搜索程序和文件"栏输入 cmd ,然后右键显示出来的 "cmd程序"并

win7和linux15.04双系统电脑启动时usb键盘上下键没作用

问题描述 win7和linux15.04双系统电脑启动时usb键盘上下键没作用 win7和linux15.04双系统电脑启动时usb键盘上下键没作用,求教 解决方案 首先开机的时候按del f1 f2 f12(不同机器不同)有没有反应,能不能进cmos设置如果不行,那键盘没接好或者坏了.在cmos设置中上下有没有反应,如果没有,键盘坏了.如果有,检查usb设置中usb keyboard support是否启用. 解决方案二: 我双系统启动过程中选择系统的时候usb键盘也不能用 不过笔记本上自带的

【电子电路】上拉电阻与下拉电阻有什么作用

下拉就是接地,上拉就相当于升压,提高驱动能力或者稳定性. 上拉电阻是用来解决总线驱动能力不足时提供电流的问题的.一般说法是上拉增大电流,下拉电阻是用来吸收电流(抵抗干扰). 上拉是将电压拉高,下拉是将电压拉低,主要用在三极管或场管的控制极的电位,因为只有满足电压差才会工作. 上拉电阻: 下拉电阻: 总之: 2者共同的作用是:避免电压的"悬浮",造成电路的不稳定:   一.上拉电阻如图所示: 1.概念:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平: 2.上拉是对器件注入

配置-求助,SSH整合后拦截器不起作用

问题描述 求助,SSH整合后拦截器不起作用 struts.xml配置如下 <interceptors> <interceptor name="loginInterceptor" class="com.music.interceptor.LoginInterceptor"></interceptor> <interceptor-stack name="globalInterceptor"> <i