SharedPreferences名称需要唯一吗?

9

可能是一个愚蠢的问题,但我正在使用几个不同名称“MyPrefs1”,“MyPrefs2”等的SharedPreference。

我认为这仅限于我的应用程序。也就是说,如果其他应用程序尝试使用相同的名称,它不会覆盖我的值。

我基本上相信我的理解是正确的,但名称“SharedPreferences”似乎表明它可以在应用程序之间共享?(它是用于活动之间共享吗?)

3个回答

11

没错,SharedPreferences存储在您应用程序的私有文件夹中(确切地说,在/data/data/您的包名/shared_prefs目录下)。

您可以为SharedPreferences指定任何名称。


只有在使用PreferenceManager.getDefaultSharedPreferences()获取共享首选项时才是正确的。 - natario
@mvai请详细说明一下,如果我使用自己的名字来调用getSharedPreferences(MY_PREFS_JSON, Context.MODE_PRIVATE)方法,那它不是私有的吗? - zooter
1
@zooter 是的,它是私有的,因为你使用了 Context.MODE_PRIVATE。 - natario

3

SharedPreferences(共享首选项)代表应用程序内不同组件可以共享的偏好设置。您在应用程序中创建的SharedPreferences永远不会与其他应用程序共享。 无论您是使用PreferenceManager.getDefaultSharedPreferences()还是Context.getSharedPreferences("file_name", Context.MODE_PRIVATE);,它们都仅限于您的应用程序。

注意 - SharedPreferencesPreferences不会暴露给其他应用程序。


3

虽然您的假设是正确的,即SharedPreferences不会在应用程序之间共享,因此名称不会冲突,但是最好(除了给共享首选项文件添加特定名称之外)加上您的应用程序包作为前缀。如果您有不同的flavor,而且不想在它们之间覆盖首选项,则这非常有用,特别是当您正在测试应用程序时,不想搞砸共享首选项文件的原始值时,这更是如此。


1
这是一封感谢信、个人意见和评论的结合。如果您提供了有建设性的反馈,而其他答案中缺少这些反馈,那么您的答案将变得更加有效。请更新或重新发布为评论(一旦获得足够的声望)。 (来自审查) - ZF007
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - ZF007
@ZF007 不同意,尽管它需要改进,但我认为这不是一个评论,它可能是一个有效的答案。 - Jonas Wilms
@batero 这个编辑可以吗(我试图更专注于问题,但我不是 Android 专家,所以...)? - Jonas Wilms
@JonasWilms 没错。如果我的回答不够清晰,对不起。 - batero

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