android - 存储在onPause,onStop或onSaveInstanceState中的数据

时间:2013-02-18 12:25:51

标签: android save state

我对onPauseonStoponSaveInstanceState的内容感到困惑。例如,Android文档说 对于onPause -

  

提交未保存的更改,但前提是用户希望此类更改在离开时永久保存(例如草稿电子邮件)。

onStop -

  

您应该使用onStop()执行更大,更密集的CPU关闭操作,例如将信息写入数据库。

onSaveInstanceState

  

您的活动可能包含您要恢复的更多状态信息,例如跟踪用户在活动中的进度的成员变量。

这三件事基本上都指向存储表格或电子邮件等信息,这不是真的吗?然后应该保存哪种方法?

2 个答案:

答案 0 :(得分:6)

您希望持久保存的所有内容都必须存储在onPause()中,因为某些Android版本认为您的应用在onPause()返回后可以停用。

由于onPause()相对经常发生,并且在许多情况下您可能无法保存同一活动的onResume()的状态,因此之间存在一些不明确的区别。因此,在onPause()执行昂贵的操作之前,每个人都希望您三思而行。

关于存储表单数据的问题,当输入字段失去焦点时,如果用户真正完全希望用户看到相同的表单数据,即使在他停止应用程序并再次启动它之后,也可以使其保持正确。< / p>

答案 1 :(得分:2)

对于2016年或之后来到这里的人,请注意@Class Stacker的答案在这一点上已经过时了。具体来说,自Android 3.0(Honeycomb)以来, onStop()保证称为,自2016年1月起占据96.8% of Android devices

请参阅此处的生命周期文档:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle(Ctrl + F表示“未处于可停止状态”)

更新:正如评论中正确指出的那样,这当然意味着您的应用必须仅限于Android 3.0及更高版本。