android - 何时保存 SharedPreferences?

标签 android sharedpreferences activity-lifecycle

我想在我的应用程序关闭时保存一些小数据结构(总共约 1kB)以及用户的偏好。这些设置仅在我的 PreferenceActivity 中被修改,但数据结构几乎在每个 Activity 中都被修改。我扩展了 Application 并将所有数据结构和首选项设为静态。然后,我尝试在我的应用程序类的 onTerminate() 中保存到 SharedPreferences,并在 onCreate() 中再次加载它。但是,onTerminate()documentation声明“它永远不会在生产 Android 设备上调用,在这些设备上,只需杀死进程即可删除进程”。

this question 的答案建议在每个修改其数据的 Activity 的 onStop() 方法中保存到 SharedPreferences。这是否可以保证在所有 情况下都保存数据?有没有一种方法可以避免每次用户在 Activity 之间转换时都进行保存的浪费(或者我应该关心)?

最佳答案

老实说,我只是按照 Android 的建议在每个 Activity 的 onPause() 中保存(即,当您写电子邮件时,请注意应用暂停时草稿是如何保存的,例如屏幕关闭)。除非您注意到它导致滞后/延迟,否则它可能不会太重要。

如果您确实注意到这种“自动保存”方法的延迟,那么您可能应该在每个 Activity 中实现某种“保存”功能,例如,这可能需要使用 ProgressDialog/AsyncTask 组合。

关于android - 何时保存 SharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142705/

相关文章:

Android BottomSheetBehavior 回调方法 onSlide() 给出了令人困惑的 slideOffset 值

android - 如何关闭某些无障碍服务的触摸探索

android - Activity 生命周期观察者 - 如何知道 Activity 实例何时被销毁?

android - 注销时,清除 Activity 历史堆栈,防止 "back"按钮打开仅登录的 Activity

android - Android 上的 Jets3t

android - 在更新数据和显示 dialogFragment 期间点击主页时崩溃。非法状态异常

java - Android StringBody(String) 已弃用

android - OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 有什么不同

android - 首选项中的可编辑列表

android - 当从 Android 中的其他 Activity 返回时, Activity 再次从服务器重新加载全部数据