SharedPreferences 与私有文件

Posted

技术标签:

【中文标题】SharedPreferences 与私有文件【英文标题】:SharedPreferences vs. Private File 【发布时间】:2012-03-22 02:13:48 【问题描述】:

在我的应用程序中,我使用PreferenceActivity 框架来存储持久数据。我的意图是创建多个保存文件,Preferences 可以访问所有这些文件,但一次只能访问一个。

什么时候使用Context.openFileOutput()生成的私有文件比较好,什么时候使用SharedPreferences比较好?

编辑 我的数据仅存在于原语中。

【问题讨论】:

【参考方案1】:

通常,开发人员使用getDefaultSharedPreferences 使用整个应用程序通用的首选项文件。

不过,android 在Context 中有一个getSharedPreferences(String name, int mode) 方法。您可以使用它来拥有多个首选项文件,在您的情况下 - 通过使用传递给 name 参数的唯一名称来保存文件。

关于波动性,您可以通过edit() 获取Editor 然后调用commit() 来强制保存偏好。

请务必注意,SharedPreferences 确实将基于name 共享:

检索并保存首选项文件“name”的内容,返回一个 SharedPreferences,您可以通过它检索和修改其值。仅将 SharedPreferences 对象的一个​​实例返回给任何同名调用者,这意味着他们将在进行编辑后立即看到彼此的编辑。

【讨论】:

那么如果我使用SharedPreferences,数据的安全性不会有问题? 您在寻找什么样的安全措施?您没有在问题中提及安全性。 我会检查您可以在其中打开 SharedPreferences 的模式。请参阅此处:developer.android.com/reference/android/content/… @Benoir 我认为这回答了我正在寻找的东西。我正在寻找的“安全性”是其他应用程序和系统必须访问的权限。 SharedPreferences 应该完成我的任务。谢谢。 @louielouie :用户可以修改共享首选项文件的内容(并将一些其他数据输入其中 - 不是以编程方式)。是存储在sd卡里吗?

以上是关于SharedPreferences 与私有文件的主要内容,如果未能解决你的问题,请参考以下文章

Flutter——SharedPreferences

SharedPreferences存储数据

SharedPreferences 存储

数据存储 共享参数 SharedPreferences

数据存储--SharedPreferences之你不知道的事

Android存储--SharedPreferences