“savedInstanceState”是什么?

12

我是Android开发新手,但我有一些面向对象编程的知识。我正在尝试从Java角度学习Android。

我的代码

我理解第9行中onCreate()方法内的savedInstanceState是Bundle类的声明。在第10行,我们从父类调用了onCreate()方法。

以下是我不理解的部分:在第10行,我们将savedInstanceState本身作为参数传递给onCreate()方法。这对我来说没有意义,因为我希望传递一个类型为Bundle的对象,但是我们实际上将一个引用而不是类型为Bundle的对象传递给了方法。


3
我认为你的困惑与代码无关,而是与你对引用和对象的理解有关。onCreate()需要一个Bundle参数,savedInstanceState也是Bundle,所以这里没有问题。 - Xaver Kapeller
请参见此处:https://dev59.com/qmgv5IYBdhLWcg3wKthA#10810447 或 https://blog.pivotal.io/labs/labs/android-savedinstancestate-bundle-faq 或 https://dev59.com/MnVC5IYBdhLWcg3w51hv 或 https://dev59.com/_Gkw5IYBdhLWcg3wg6ug - Mohammad Tauqir
@Tauqir,我认为你完全没有抓住问题的重点。 - Xaver Kapeller
顺便说一下:请直接将您的代码编辑到问题中,不要在此处发布代码图片。 - Xaver Kapeller
1
与我第一个评论相比,要更详细地解释:第9行中的“Bundle savedInstanceState”部分是onCreate()方法的一个Bundle参数的声明。这意味着onCreate()期望使用Bundle实例作为参数进行调用。在第10行,此参数然后传递给父类覆盖方法。 - Xaver Kapeller
显示剩余3条评论
3个回答

17

savedInstanceState是一个引用,指向传递给每个Android Activity的onCreate方法的Bundle对象。

onCreate()方法期望以Bundle作为参数调用,因此我们传递savedInstanceState。

特殊情况下,Activity可以使用存储在此bundle中的数据将自己恢复到先前状态。如果没有可用的实例数据,savedInstanceState将为null。

例如,第一次启动一个Activity时,savedInstanceState将始终为null,但如果Activity在旋转过程中被销毁,则可能为非null,因为每次启动或重新启动Activity时都会调用onCreate方法。

希望这有所帮助。


3

当一个活动被重新初始化时,savedInstance 包含最近的数据,特别是包含活动之前初始化部分的数据。

实际上,当一个活动被销毁时,它保存了它的状态,这样当用户返回到该活动时,它可以恢复其状态。


0

基本上,捆绑包是一种数据结构,它存储了之前在活动中使用的数据。当系统发生某些干扰或假设某人打电话时,您在应用程序中所拥有的数据被保存在bundle中,您可以访问相同的数据。

如果我们谈论savedinstancestate,那么很容易知道,保存的实例状态基本上是一个对象/引用,无论什么都无关紧要,但这是数据将被保留的方式...您必须知道类只是原型或蓝图(您可以说),savedinstancestate是一个对象或引用。Bundle是一个类,我想您已经知道了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接