onpause android中使用SharedPreferences存储数据的效果

Posted

技术标签:

【中文标题】onpause android中使用SharedPreferences存储数据的效果【英文标题】:Effect of storing data using SharedPreferences in onpause android 【发布时间】:2013-06-24 11:26:54 【问题描述】:

我将我的数据结构值存储在onPause() 活动方法中的SharedPreferences 中 SP.xml 文件大小变为 25K ,如果是的话,这样做存储在onPause() 方法中会有什么影响那么我应该怎么做在SharedPreferences 中存储可能的数据结构。

【问题讨论】:

为什么不将它存储在应用程序目录中??它是私有的,只能由您的应用访问 @BrijeshThakur 您还可以将SharedPreferences 设为私有。不是吗? 可以,但不建议使用共享首选项存储大数据。您可以阅读页面了解更多信息:developer.android.com/guide/topics/data/data-storage.html#pref @BrijeshThakur Is 25K is large Data for Shared Preferences 是否有任何一般文件大小限制或没有。共享首选项的数据类型存储限制 25K 还可以。但我会推荐 Private App Directory。 【参考方案1】:

25k 不是特别大,但我仍然不推荐它。根据您应用的需求和复杂性,您可以查看SQLite database 或serialize 您的数据并将其放入internal file。

【讨论】:

我在 5 个类中总共有 100 个变量,所以在序列化类时我需要序列化它的每个变量吗? 是的。您需要保存的任何内容都应该被序列化。大多数内置 java 类都内置了序列化。如果你创建了自定义的东西,你需要为它们编写序列化例程。 我的共享首选项需要 40 毫秒来存储我的数据是否会影响我在 onPause 方法中执行的应用程序的任何方式? 40ms 不算长。别担心。【参考方案2】:

存储在SharedPreferences 中可让您在同一个应用程序中几乎无处不在地访问您的数据。除非您需要令牌或其他任何小但重要的数据,否则您不应该这样做(不好的做法,因为它会使您的应用程序变得繁重) .如果您正在切换活动或片段,最好将信息以捆绑的形式传递,或者将其保存在OnPause() 以在应用程序恢复时获取数据或OnSaveInstance() 以进行轮换。

【讨论】:

【参考方案3】:

但除非结构化数据太多,否则我更喜欢 SQLite。抛出 100 个选择查询感觉很奇怪!

【讨论】:

以上是关于onpause android中使用SharedPreferences存储数据的效果的主要内容,如果未能解决你的问题,请参考以下文章

android Activity的onPause()与onResume()

Android:在啥情况下出现对话框会导致 onPause() 被调用?

Android中,弹出对话框会使当前页面的Activity回调onPause吗?

Android:相当于 onPause 的任务或应用程序

android - onPause()

android onPause OnSavedInstance