核心区别在于它们的名称,PreferenceManger授予开发人员对不同功能的访问权限以进行管理SharedPreferences,例如检索当前偏好值的映射或设置用户偏好。到他们的默认值。PreferenceScreen处理显示用户偏好的屏幕,以便用户可以为它们分配值。有时这意味着在具有其他首选项的屏幕上显示一个列表项,单击时会打开另一个具有更多首选项的屏幕,就像PreferenceScreen嵌套 s 的情况一样。
您的问题意味着您认为 whatPreferenceManager.getSharedPreferences()和PreferenceScreen.getSharedPreferences()does 之间存在差异,但根据源代码,它们是相同的。
PreferenceScreen:
public SharedPreferences getSharedPreferences() {
if (mPreferenceManager == null) {
return null;
}
return mPreferenceManager.getSharedPreferences();
}
所以PreferenceMangerandPreferenceScreen是不同的实体,但是SharedPreference那些方法返回应该是同一个对象,因为PreferenceScreen从PreferenceManager. 我希望这就是你一直在寻找的答案。
如果您有选择,请使用PreferenceManager.getSharedPreferences(),它更明显并且内部方法调用更少。
有趣的事实:
PreferenceFragment:
public PreferenceManager getPreferenceManager() {
return mPreferenceManager;
}
public PreferenceScreen getPreferenceScreen() {
return mPreferenceManager.getPreferenceScreen();
}