【第22期】观点:IT 行业加班,到底有没有价值?

savedInstanceState的作用和用法

原创 2017年01月03日 10:43:49

写过Android程序的都知道Activity中有一个名称叫onCreate的方法。该方法是在Activity创建时被系统调用,是一个Activity生命周期的开始。可是有一点容易被忽视,就是onCreate方法的参数savedInstanceState。因为在一般的程序开发中,很少用到这个参数。

onCreate方法的完整定义如下:

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}


从上面的代码可以看出,onCreate方法的参数是一个Bundle类型的参数。Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的。

从字面上看savedInstanceState,是保存实例状态的。实际上,savedInstanceState也就是保存Activity的状态的。那么,savedInstanceState中的状态数据是从何处而来的呢?

下面我们介绍Activity的另一个方法saveInstanceState。

onsaveInstanceState方法是用来保存Activity的状态的。当一个Activity在生命周期结束前,会调用该方法保存状态。这个方法有一个参数名称与onCreate方法参数名称相同。如下所示:

public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInsanceState);
}

在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInstanceState中,将状态数据以key-value的形式放入到savedInstanceState中。这样,当一个Activity被创建时,就能从onCreate的参数savedInsanceState中获得状态数据。

状态这个参数在实现应用中有很大的用途,比如:一个游戏在退出前,保存一下当前游戏运行的状态,当下次开启时能接着上次的继续玩下去。再比如:电子书程序,当一本小说被阅读到第199页后退出了(不管是内存不足还是用户自动关闭程序),当下次打开时,读者可能已忘记了上次已阅读到第几页了,但是,读者想接着上次的读下去。如果采用saveInstallState参数,就很容易解决上述问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

最全的系统控件界面用法汇总

今天我用自己写的一个Demo 和大家详细介绍一个Android开发中遇到的一些常用系统控件的使用技巧。         1. 文本框TextView        TextView...

onCreate中的savedInstanceState有何具体作用

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。 当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会

android动画的使用(下-高级用法)

前言 在上篇介绍了android动画的一些基本用法,如果仔细看过的话,要对付一般的动画效果,想必是没有太大问题的,但是对于某些特殊需求,单纯用最基本的用法是没法实现的,很明显,这些都是需要我们自己去...

转-activity机制与intent用法总结

Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见<span style="text-decorati
  • yypdc
  • yypdc
  • 2014-01-02 16:39
  • 108

Bundle saveInstanceState的作用与重写onSaveInstanceState方法

这是一位大牛的博文,详细的解释了saveInstanceState的理由和onSaveInstanceState()需要注意的问题。 转载自:http://www.cnblogs.com/hanyo...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)