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

我有一个困惑,应该在onPauseonStoponSaveInstanceState 。 例如,Android文档说,对于onPause

提交未保存的更改,但只有当用户期望这些更改在他们离开时(例如电子邮件草稿)被永久保存。

对于onStop

你应该使用onStop()来执行更大,更CPU密集的closures操作,比如将信息写入数据库。

对于onSaveInstanceState

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

这三件事情不是基本上指向存储信息,如表单或电子邮件吗? 那么应该用哪种方法保存?

Solutions Collecting From Web of "android – 存储在onPause,onStop或onSaveInstanceState中的数据"

所有你想要持久化的东西都必须存储在onPause()因为有些Android版本认为你的应用在onPause()返回之后是可以被驱动的。

由于onPause()发生得比较频繁,而且在很多情况下,你可能不会保存同一个Activity的onResume()的状态,所以有些不清楚的区别。 因此,在onPause()执行昂贵的操作之前,每个人都希望你三思而后行。

您关于存储表单数据的问题,以及在input字段丢失焦点时,如果用户看到相同的表单数据,即使在停止应用程序并重新启动它之后,也可以使其持久化。

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

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

更新 :正如在评论中指出的,这当然意味着你的应用程序必须专门针对Android 3.0及以上。