【发布时间】:2012-12-18 00:56:43
【问题描述】:
我想在我的应用关闭时保存一些小数据结构(总共约 1kB)以及用户的偏好。设置仅在我的 PreferenceActivity 中修改,但数据结构几乎在每个活动中都进行了修改。我扩展了Application 并将所有数据结构和首选项设为静态。然后我尝试在我的应用程序类的onTerminate() 中保存到 SharedPreferences 并在onCreate() 中再次加载它。但是,onTerminate() 的documentation 声明“它永远不会在生产的 Android 设备上调用,在这些设备上,只需简单地杀死进程就可以删除它们”。
this question 的答案建议在每个活动修改其数据的 onStop() 方法中保存到 SharedPreferences。这会保证数据在所有情况下都保存吗?有没有办法避免每次用户在活动之间转换时浪费保存(或者我什至应该关心)?
【问题讨论】:
-
你不能简单地在你的
Application类中创建一个方法来保存所有的sharedPrefs,然后在需要时从Activity调用它吗? -
是的,我可以创建一个静态方法,但我应该在活动生命周期中的什么地方调用它?
-
好吧,您说“当您的应用程序关闭时”,所以我想在
onDestroy中,用户将看到最后一个Activity。或者可能是其中之一“你确定要离开吗?”Dialogs. -
问题是用户可以离开任何活动(例如打电话),所以有相当多的浪费。
-
onDestroy()不能保证被调用,而onStop()可能会在您的下一个活动开始后被调用,所以onPause()可能是最好的地方。
标签: android sharedpreferences activity-lifecycle