【问题标题】:What is 'savedInstanceState'?什么是“已保存实例状态”?
【发布时间】:2016-05-11 03:27:11
【问题描述】:

我是 Android 开发的新手,但我对 OOP 概念有所了解。我正在尝试从 Java 的角度学习 Android。

我知道第 9 行 onCreate() 内的 savedInstanceState 是 Bundle 类的声明。在第 10 行,我们从超类调用 onCreate() 方法。

我不明白的是:在第 10 行,我们将 savedInstanceState 本身作为参数传递给 onCreate() 方法。这对我来说没有意义,因为我希望传递一个 Bundle 类型的对象,但我们将引用而不是 Bundle 类型的对象传递给该方法。

【问题讨论】:

标签: java android android-studio sdk


【解决方案1】:

savedInstanceState 是对传递到每个 Android Activity 的 onCreate 方法的 Bundle 对象的引用。

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

在特殊情况下,Activity 可以使用存储在此捆绑包中的数据将自身恢复到以前的状态。如果没有可用的实例数据,则 savedInstanceState 将为空。

例如,第一次启动 Activity 时,savedInstanceState 将始终为 null,但如果 Activity 在轮换期间被销毁,则可能为非 null,因为每次启动或重新启动 Activity 时都会调用 onCreate。

希望对你有帮助

【讨论】:

    【解决方案2】:

    当一个activity被重新初始化时,saveInstance包含了最新的数据,特别是包含了activity之前初始化部分的数据。

    实际上,当一个活动被杀死时,它会保存它的状态,以便当用户回到这个活动时,它可以恢复它的状态

    【讨论】:

      【解决方案3】:

      基本上,bundle 是一种数据结构,用于存储之前在活动中使用的数据。当系统出现一些干扰或假设有人打电话给你并且你拿起电话时,你在应用程序中拥有的数据保存在捆绑包中,您可以访问相同的数据..

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2013-04-15
        • 2011-03-14
        • 2013-08-27
        相关资源
        最近更新 更多