什么是onCreate(Bundle savedInstanceState)
任何人都可以帮助我了解Bundle savedInstanceState
在onCreate(Bundle savedInstanceState)
我是Android新手。 我试图从developer.android.com了解它。 但我无法理解。 任何人都可以简化它?
如果将应用程序的状态保存在一个包中(通常是onSaveInstanceState
非持久dynamic数据),那么如果需要重新创build活动(例如,方向更改),则可以将其返回到onCreate
,以便您不会丢失这个事先的信息。 如果没有提供数据, savedInstanceState
为空。
…您应该使用onPause()方法将任何持久性数据(如用户编辑)写入存储。 另外,方法onSaveInstanceState(Bundle)在将活动置于这样的后台状态之前被调用,允许你将活动中的任何dynamic实例状态保存到给定的Bundle中,以便以后在onCreate(Bundle)中被接收需要重新创build。 请参阅“stream程生命周期”部分,了解stream程生命周期与其托pipe活动的关系。 请注意,将持久数据保存在onPause()而不是onSaveInstanceState(Bundle)中是非常重要的,因为后者不是生命周期callback的一部分,所以不会在文档中描述的每种情况下调用。
资源
onCreate(Bundle savedInstanceState)
当活动第一次启动时,你将得到Bundle
null,当活动方向被改变时,它将被使用。
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android提供了另一个实现这一点的优雅方法。 为了达到这个目的,我们必须重写一个名为onSaveInstanceState()
的方法。 Android平台允许用户保存任何实例状态。 实例状态可以保存在Bundle中。 Bundle作为parameter passing给onSaveInstanceState方法。
我们可以从作为parameter passing的Bundle中加载保存的实例状态到onCreate
方法。 我们也可以在onRestoreInstanceState
方法中加载保存的实例状态。 但是我会留给读者弄清楚的。
正如Dhruv Gairola所回答的,您可以使用Bundle savedInstanceState保存应用程序的状态。 我正在试图给出一个很简单的例子,像我这样的新学员可以很容易地理解。
假设,你有一个简单的片段与一个TextView和一个button。 每次点击button时,文本都会改变。 现在,改变你的设备/模拟器的方向,并注意到你丢失了数据(意味着你点击后得到了改变的数据),片段又是第一次开始。 通过使用Bundle savedInstanceState,我们可以摆脱这一点。 如果你看看片段的生命线。 片段Lifecylce你会得到一个方法“onSaveInstanceState”被称为当片段即将销毁。
所以,我们可以保存状态就是将更改后的文本值保存到这个包中
int counter = 0; @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("value",counter); }
你做了方向后,“onCreate”方法会被调用吗? 所以我们可以做到这一点
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState == null){ //it is the first time the fragment is being called counter = 0; }else{ //not the first time so we will check SavedInstanceState bundle counter = savedInstanceState.getInt("value",0); //here zero is the default value } }
现在,在定位之后,你不会失去你的价值。 修改后的值将始终显示。
当活动首次启动时, onCreate(Bundle)
被调用。 您可以使用它来执行一次性初始化,例如创build用户界面。 onCreate()
接受一个参数,该参数可以是null,也可以是以前由onSaveInstanceState
保存的状态信息。
onCreate(Bundle savedInstanceState)被调用,如果你的Activity和它在上面描述的场景(可视化视图)中被终止了,savedInstanceState将是非空的。 然后,您的应用程序可以抓取(捕获)来自savedInstanceState的数据并重新生成您的活动