SharedPreferences和内部文件存储之间的主要区别

11
我想知道在存储方面哪个更好: 共享首选项还是内部文件存储。 哪个更快? 其中一个是否有任何内存问题?
谢谢,

为什么不做一个测试来看哪个更快?至于内存问题,如果你的代码写得好,两种方法都不会有任何问题。 - Buda Gavril
4个回答

14
  • SharedPreference:以键值对的形式存储私有基本数据。(用于存储小型条目/数据)
  • Internal Storage:在设备内存中存储私有数据。(用于存储大型数据集)

更多存储选项请参见:存储选项

我曾遇到过有关 SharedPreference 的问题。

问题: 每当您在使用 SharedPreference 时遇到强制关闭/应用程序崩溃时,SharedPreference 将为空。您可以在此处阅读更多信息:应用程序强制关闭或崩溃时重置 Shared Preferences


+1。好答案。我有一个问题。Shared Preferences的XML文件可以被导出并由拥有该手机的人查看吗?我问这个问题是因为我打算将当前用户的用户名和密码存储在共享首选项中。 - Ashwin
@Ashwin,请查看:(使用MODE_PRIVATE的getSharedPreferences)[http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String, int)]。 - Paresh Mayani
MODE_PRIVATE表示其他应用程序无法访问共享首选项。但是,我可以将手机连接到PC,并转到DDMS(Eclipse),然后从那里将此文件导出到PC吗? (对于DATABASE,可以这样做-可以将DB导出到PC) - Ashwin

3

好的,Shared preferences 最终也保存在 内部文件存储 中。

Shared preferences 就像是 键值对,它将数据保存在内存中,并由系统最终保存到内部文件存储中。

如果您需要经常访问该值,则可以使用 Shared preferences

如果您的数据结构较小且不复杂,则可以直接使用 Shared preferences

如果您只想保存数据,并且数据将占用大量内存空间,则可以使用文件进行保存。


Shared Preferences的XML文件可以被使用该手机的其他人导出和查看吗?我问这个问题是因为我打算在共享偏好设置中存储当前用户的用户名和密码。 - Ashwin

1
请阅读与数据存储相关的Android文档
如果您想存储非常小的值,那么可以选择SharedPreference。

0

这完全取决于你喜欢做什么:如果你有相对较少的键值对,请使用 Shared Preferences。如果你有更大量的数据,请使用文件,因为 Shared Preferences 在第一次使用后将保存在内存中。所以把大量数据存储在其中是一个不好的想法 ;-).


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接