首页 > 解决方案 > getDefaultSharedPreferences 上传递的上下文会影响结果吗?

问题描述

我遇到了一个奇怪的错误,所以我试图消除这种可能性。

传递给的上下文是否会PreferenceManager.getDefaultSharedPreferences()改变结果?

我的意思是,当我向我的应用程序写入设置时,我从不注意我传递给这个方法的上下文,因为它是一个有效的上下文......

有时我把Activity,有时Appliaction我手头上的任何上下文

这是错的吗?我注意到我在某些时候得到了错误的首选项值,我不知道我的代码中是否存在错误或者这是否是

标签: androidsharedpreferencesandroid-preferences

解决方案


Application提供 an或 anActivity作为 的Context参数都没有关系PreferenceManager.getDefaultSharedPreferences()

如果您查看以下来源getDefaultSharedPreferences()

return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
        getDefaultSharedPreferencesMode());

进一步看,进入getDefaultSharedPreferencesName(context)

return context.getPackageName() + "_preferences";

这意味着对于您的任何Context应用程序,您将得到相同的SharedPreferences返回,因为您的应用程序 ID 不会基于Activityor更改Application

唯一可能遇到潜在问题的情况是您手动Context为另一个包创建一个(例如使用Context.createPackageContext())。


推荐阅读