Dav*_*and 1 android sharedpreferences
我在使用SharedPreferences及其监听器时遇到了奇怪的行为.我在我的应用程序中只使用了一个我检索的SharedPreference实例PreferenceManager.getDefaultSharedPreferences(this);
在我的PreferenceFragment中,我有一个按钮可将首选项重置为默认值.这就是它的作用:
PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit();
PreferenceManager.setDefaultValues(getActivity(), R.xml.settings, true);
Run Code Online (Sandbox Code Playgroud)
我有几个这个SharedPreference的监听器.它们都完美地用于添加/修改我的键.但他们永远不会因重置而被解雇.该文件并不具体针对此案例,但指出:
onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key)
更改,添加或删除共享首选项时调用.
对我来说,重置是删除所有首选项,所以我期待回调发生.
为什么不发生?非常感谢!
这是一个功能,并没有真正记录好.这是基于阅读源代码的解释.
将共享偏好视为Map可以在大容量存储器中持久存储的键值.然后想到SharedPreferences.Editor另一个Map只存储要应用于apply()或的修改commit().删除存储为null值.clear()在编辑器中实现为布尔标志,在设置时,在应用更改之前清除目标共享首选项映射.
每个键都会通知听众.在清除之前,没有关于共享首选项映射中的密钥的信息.因此,您只会收到有关在编辑器中由键名指定的更改的通知.
它也可以以其他方式实现:keySet()在清除映射之前,仅在几行代码中记录已修改密钥中的现有共享首选项.
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |