我想在我的应用程序关闭时保存一些小数据结构(总共约 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/