什么是onCreate(Bundle savedInstanceState)

任何人都可以帮助我了解Bundle savedInstanceStateonCreate(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的数据并重新生成您的活动