在onCreate(Bundle savedInstanceState)中,已经有了super.onCreate(savedInstanceState) .
API表示它在销毁后创建活动时恢复状态 .
但我必须覆盖onSavedInstanceState(Bundle outState)以恢复特定状态 .
为什么?
使用方法onCreate()和onSavedInstanceState()在savedInstanceState中保存了哪些类型的信息?
我很困惑!
默认情况下,当您的设备更改配置时(例如,设备旋转,您更改了语言设置等),将重新创建前景 Activity ,并且您的所有活动数据都将丢失 . 例如,如果您有一个已分配了某个值的成员变量 mVariable ,则在配置更改后您将丢失其值 . 这就是为什么你需要将重要数据保存到 savedInstanceState 并从 onCreate() 方法重新初始化它 . 您只需检查 savedInstanceState 是否 null ,如果是,则从savedInstance中初始化值,否则使用默认值初始化init .
Activity
mVariable
savedInstanceState
onCreate()
null
进一步阅读:http://developer.android.com/training/basics/activity-lifecycle/recreating.html
在您的活动暂停之前调用onSaveInstanceState() . 因此,可以从保存的Bundle中检索它可能被破坏后所需的任何信息 . Bundle是您要保存的所有信息的容器 . 您可以使用put *函数将数据插入其中 . 要恢复数据,请使用get *函数,就像put *函数一样 . 数据存储为名称 - 值对 . 没有特定的使用这个元素,你可以在任何情况下使用它(保存名称,数字或任何你需要再次使用时再次打开应用程序)
2 回答
默认情况下,当您的设备更改配置时(例如,设备旋转,您更改了语言设置等),将重新创建前景
Activity
,并且您的所有活动数据都将丢失 . 例如,如果您有一个已分配了某个值的成员变量mVariable
,则在配置更改后您将丢失其值 . 这就是为什么你需要将重要数据保存到savedInstanceState
并从onCreate()
方法重新初始化它 . 您只需检查savedInstanceState
是否null
,如果是,则从savedInstance中初始化值,否则使用默认值初始化init .进一步阅读:http://developer.android.com/training/basics/activity-lifecycle/recreating.html
在您的活动暂停之前调用onSaveInstanceState() . 因此,可以从保存的Bundle中检索它可能被破坏后所需的任何信息 . Bundle是您要保存的所有信息的容器 . 您可以使用put *函数将数据插入其中 . 要恢复数据,请使用get *函数,就像put *函数一样 . 数据存储为名称 - 值对 . 没有特定的使用这个元素,你可以在任何情况下使用它(保存名称,数字或任何你需要再次使用时再次打开应用程序)