例如,如果增加或删除了几个偏好设置条目,当应用程序使用新的偏好设置结构进行更新时,Android如何处理现有的偏好设置数据?
对于这个基础的问题,我很抱歉,但是我通过认真搜索和阅读无法找到答案。
对于这个基础的问题,我很抱歉,但是我通过认真搜索和阅读无法找到答案。
data/data/your.application.package/shared_prefs/
中的xml文件中。该文件名为your.application.package_preferences.xml
;SharedReferences
对象并调用SharedReferences.startLoadFromDisk方法。mFile
)被解析并将偏好设置加载到内存存储器(map
)中。BufferedInputStream str = new BufferedInputStream(new FileInputStream(mFile), 16*1024);
map = XmlUtils.readMapXml(str);
private Map<String, Object> mMap
变量中读取。此外,应用程序可以调用startReloadIfChangedUnexpectedly方法,如果底层文件已更改,则会解析该文件并创建一个新HashMap。String v = (String)mMap.get(key); // 未找到 => v = null
return v != null ? v : defValue; // 返回defValue
2. 您在新版本中删除了首选项项。xml文件和map
对象将包含一些冗余数据,但当用户下次保存首选项时,它将被修复。pref1_key
),并更改了另一个项的键,使其引用第一个项(从pref2_key
到pref1_key
)。那么第二个首选项项将具有第一个项的值。(Integer)mMap.get(key);
的代码。但是您可以将EditTextPreference更改为ListPreference,因为它们都具有String类型。<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="pref_theme_key">THEME_LIGHT</string>
<string name="pref_homepage_key">test</string>
<boolean name="pref_display_name_key" value="true" />
</map>