android - getDefaultSharedPreferences 上传递的上下文会影响结果吗?
问题描述
我遇到了一个奇怪的错误,所以我试图消除这种可能性。
传递给的上下文是否会PreferenceManager.getDefaultSharedPreferences()
改变结果?
我的意思是,当我向我的应用程序写入设置时,我从不注意我传递给这个方法的上下文,因为它是一个有效的上下文......
有时我把Activity
,有时Appliaction
我手头上的任何上下文
这是错的吗?我注意到我在某些时候得到了错误的首选项值,我不知道我的代码中是否存在错误或者这是否是
解决方案
Application
提供 an或 anActivity
作为 的Context
参数都没有关系PreferenceManager.getDefaultSharedPreferences()
。
如果您查看以下来源getDefaultSharedPreferences()
:
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
进一步看,进入getDefaultSharedPreferencesName(context)
:
return context.getPackageName() + "_preferences";
这意味着对于您的任何Context
应用程序,您将得到相同的SharedPreferences
返回,因为您的应用程序 ID 不会基于Activity
or更改Application
。
唯一可能遇到潜在问题的情况是您手动Context
为另一个包创建一个(例如使用Context.createPackageContext()
)。
推荐阅读
- mongodb - 具有不同计算的多个总和mongodb
- angular - Chrome 8 中的 Identity Server 4 和 SameSite cookie 问题
- java - 是否可以在 Flutter 中运行其他语言编写的测试代码?
- swift - 删除嵌套视图时 UIScrollView 动画偏移更改
- php - 使用 `Imap_parser` 无法正确显示单词
- c++ - String.size() 不会无限循环
- python - LogisticRegression 文档,惩罚矛盾
- javascript - 链表指针 Javascript,追加方法
- linux - 检查 Linux CentOS VM 磁盘可用空间
- c++ - C++ 通过宏/模板定义函数