SplishActivity的作用
来源:互联网 发布:淘宝衣服代购是真的吗 编辑:程序博客网 时间:2024/05/22 04:47
众所周知,我们很多应用都会有一个SplashActivity,用来当作进入应用的第一个过度界面,显示一个logo信息。如下所示,是我的简洁天气的SplashActivity。
但是,它的作用仅仅只是用来显示一个logo信息吗?这样岂不是太浪费了?答案是肯定的。
其实一开始学习Android的时候,我也以为它的作用仅仅是用来显示logo信息,但是在观察新浪微博、腾讯微博等应用之后,我发现每次显示这个界面的时间会有所不同,网络好的时候感觉不出来,网络不好的时候会停留的时间比较长一点,所以,我可以肯定说:在这个Activity里面,肯定为下一个Activity的出现打好了基础,也就是说预先初始化了一些工具类、加载了一些必要数据。这样的话在下一个Activity很快就可以完整把所有数据展现在用户面前,获取更好的用户体验。
说到这里,也许有的童鞋就会说了,我可以在Application里做这些事情啊,然后直接进入MainActivity,其实这样也是可以的,比如我这个简洁天气最初就是这样做的,但是细心的朋友就会发现,每次进我这个应用的时候,屏幕会黑一段时间,尤其是第一次进入更加明显,其实就是因为我把加载数据的事情放在Application里面,而加载2000多个城市是需要一定时间的。这样就不可避免的会黑一段时间,这样给用户的感觉就没那么亲和了。
OK,铺垫就到这里了,下面切入正题,我们来看看这个简单SplashActivity:
- /**
- *
- * @author way
- * 预先加载数据的SplashActivity
- *
- */
- public class SplashActivity extends Activity {
- private static final int SHOW_TIME_MIN = 3000;// 最小显示时间
- private long mStartTime;// 开始时间
- private Handler mHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- switch (msg.what) {
- case Application.CITY_LIST_SCUESS:// 如果城市列表加载完毕,就发送此消息
- long loadingTime = System.currentTimeMillis() - mStartTime;// 计算一下总共花费的时间
- if (loadingTime < SHOW_TIME_MIN) {// 如果比最小显示时间还短,就延时进入MainActivity,否则直接进入
- mHandler.postDelayed(goToMainActivity, SHOW_TIME_MIN
- - loadingTime);
- } else {
- mHandler.post(goToMainActivity);
- }
- break;
- default:
- break;
- }
- }
- };
- //进入下一个Activity
- Runnable goToMainActivity = new Runnable() {
- @Override
- public void run() {
- SplashActivity.this.startActivity(new Intent(SplashActivity.this,
- MainActivity.class));
- finish();
- }
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.splash);
- mStartTime = System.currentTimeMillis();//记录开始时间,
- Application.getInstance().initData(mHandler);//开始加载数据
- }
- }
我这里把加载数据的函数放在Application里面,做一些复制数据库文件,读取数据库城市列表等一些相对比较耗时的事情,这里就不具体说这个加载数据的函数了。因为我们可以根据不同的需求改变这个函数,比如说微博应用就替换成异步请求网络数据等。我这个例子仅是提供一个扩展思路,如果有更好的建议或者批评,欢迎大家给我留言。
0 0
- SplishActivity的作用
- 作用域::的作用
- 作用域的作用
- ::的作用
- !!的作用
- Spring的作用、Struts的作用、Hiberante的作用
- 电容的作用?电容器的作用?
- 电话交换机的作用,程控交换机的作用
- 电容的作用?电容器的作用?
- 网络地址的作用,子网掩码的作用
- enum的作用以及主要的作用
- JavaScript 的 “-” 的作用
- 变量的作用功能、作用域和作用形态
- Spring的作用域以及RequestContextListener作用
- Spring的作用域以及RequestContextListener作用
- Spring的作用域以及RequestContextListener作用
- 作用域,闭包的作用
- Spring的作用域以及RequestContextListener作用
- 网址收集
- Ffplay视频播放流程
- IO流__【概述】【字符文件的读写和复制】【字符流缓冲区】
- 客户端DNS被流氓修改
- 第十七周 年龄几何
- SplishActivity的作用
- Oracle百问百答(七)
- 单链表排序(单链表)
- Thinkpad x230设置启动顺序
- 苹果低调收购BroadMap 改善地图服务
- NSdata 与 NSString,Byte数组,UIImage 的相互转换---ios开发 Objective-C
- 2013年终总结
- Twitter创始人加入迪斯尼董事会
- iOS学习笔记——滚动视图(scrollView)