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() 被调用?