首页 文章

为什么我要在android中覆盖onSavedInstanceState以检索实例状态?

提问于
浏览
0

在onCreate(Bundle savedInstanceState)中,已经有了super.onCreate(savedInstanceState) .

API表示它在销毁后创建活动时恢复状态 .

但我必须覆盖onSavedInstanceState(Bundle outState)以恢复特定状态 .

为什么?

使用方法onCreate()和onSavedInstanceState()在savedInstanceState中保存了哪些类型的信息?

我很困惑!

2 回答

  • 0

    默认情况下,当您的设备更改配置时(例如,设备旋转,您更改了语言设置等),将重新创建前景 Activity ,并且您的所有活动数据都将丢失 . 例如,如果您有一个已分配了某个值的成员变量 mVariable ,则在配置更改后您将丢失其值 . 这就是为什么你需要将重要数据保存到 savedInstanceState 并从 onCreate() 方法重新初始化它 . 您只需检查 savedInstanceState 是否 null ,如果是,则从savedInstance中初始化值,否则使用默认值初始化init .

    进一步阅读:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

  • 0

    在您的活动暂停之前调用onSaveInstanceState() . 因此,可以从保存的Bundle中检索它可能被破坏后所需的任何信息 . Bundle是您要保存的所有信息的容器 . 您可以使用put *函数将数据插入其中 . 要恢复数据,请使用get *函数,就像put *函数一样 . 数据存储为名称 - 值对 . 没有特定的使用这个元素,你可以在任何情况下使用它(保存名称,数字或任何你需要再次使用时再次打开应用程序)

相关问题