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