7

我对应该输入什么感到困惑onPauseonStop并且onSaveInstanceState。例如,Android 文档说 For onPause-

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

对于onStop-

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

为了onSaveInstanceState

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

难道这三件事基本上都指向存储诸如表单或电子邮件之类的信息吗?那么应该用什么方法保存呢?

4

2 回答 2

6

您想要持久化的所有内容都必须存储在其中,onPause()因为某些 Android 版本认为您的应用在onPause()返回后会被杀死。

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

您关于存储表单数据的问题,好吧,如果确实完全打算让用户在停止应用程序并重新启动它之后看到相同的表单数据,那么您可以在输入字段失去焦点时保持这种状态。

于 2013-02-18T12:33:33.200 回答
2

对于 2016 年或之后来到这里的任何人,请注意 @Class Stacker 的答案在这一点上已经过时了。具体来说,onStop()保证从 Android 3.0 (Honeycomb) 开始调用,截至 2016 年 1 月,该版本占Android 设备的 96.8%

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

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

于 2016-01-06T09:27:21.530 回答