【发布时间】:2012-08-06 03:50:06
【问题描述】:
试图决定(对于我的应用程序)在onPause() 中保存什么以及在onSaveInstanceState() 中保存什么,我梳理了整个 SO 以获得提示和明确的指导。
如果我理解正确,onSaveInstanceState() 最适合保存“运行时更改”或“当前状态”(无论是什么意思),而 onPause() 最适合保存“持久状态”(无论是什么意思)。
我仍然难以确定我的应用程序中的“持久状态”与“当前状态”的构成。例如,虽然用户偏好显然是持久的,但当用户更改它们时,Android UI 框架总是自动保存它们,我是否需要将它们保存在onPause() 中?
类数据成员需要保存在onSaveInstanceState()吗?我需要为我的应用程序中的每个类都这样做吗?
我很困惑。
你能举出真实世界的例子,说明哪些内容必须保存在onPause() 中,哪些内容必须保存在onSaveInstanceState() 中? Except 用于设备配置更改,即。
--
一些新的见解,我的问题得到了回答:
- onSaveInstanceState 的
Bundle是 not written to anything,而且无论如何都不是持久的。 - onSaveInstanceState 的
Bundle数据在应用程序关闭之前将仅为held in memory。
【问题讨论】:
-
“设备配置更改除外”...这是什么意思?
-
这与方向类型的变化有关。
-
@AlexLockwood “除外”一词是其含义的链接。几乎无聊的例子是方向类型的变化,但它可能是别的什么? (例如,已连接 USB 键盘、已建立 Internet 连接等)
标签: android android-activity onpause activity-lifecycle application-state