我对onPause
,onStop
和onSaveInstanceState
的内容感到困惑。例如,Android文档说
对于onPause
-
提交未保存的更改,但前提是用户希望此类更改在离开时永久保存(例如草稿电子邮件)。
onStop
-
您应该使用onStop()执行更大,更密集的CPU关闭操作,例如将信息写入数据库。
onSaveInstanceState
您的活动可能包含您要恢复的更多状态信息,例如跟踪用户在活动中的进度的成员变量。
这三件事基本上都指向存储表格或电子邮件等信息,这不是真的吗?然后应该保存哪种方法?
答案 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及更高版本。