当用户安装应用时,Windows 在设备上创建一个特殊的位置/目录和一些特殊的注册表条目,以存储应用程序的设置。
你不必担心在何处能找到该位置/目录和注册表条目,因为 Windows 会跟踪它们。你只需使用 ApplicationData 类访问它们。
如果用户卸载了该应用,Windows 会自动删除所匹配的应用设置位置和注册表条目。
Windows APP中的ApplicationData类似于Android中的SharedPreferences。
ApplicationData Class
提供对应用程序数据存储区的访问。 应用程序数据包含本地、漫游或临时性的文件和设置。
下面的代码示例演示如何获取应用程序的本地设置容器。
using Windows.Storage;
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
ApplicationData.LocalSettings
使用 LocalSettings | localSettings 属性可以获取在 ApplicationDataContainer 对象中的设置。使用 ApplicationDataContainer.Values | values 属性可以访问在 localSettings
容器中的设置。此示例创建并读取名为exampleSetting
的设置。
调用 ApplicationDataContainerSettings.Remove | remove 方法以在完成时删除 exampleSetting
设置。
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; // 创建一个exampleSetting localSettings.Values["exampleSetting"] = "Hello Windows"; // 读取exampleSetting Object value = localSettings.Values["exampleSetting"]; if (value == null) { // No data } else { // Access data in value } // 删除exampleSetting localSettings.Values.Remove("exampleSetting");
可以使用上述方式把所有的设置放在Values中,但也可以使用ApplicationDataContainer.CreateContainer | createContainer分“组”进行存储访问。
调用 ApplicationDataContainer.CreateContainer | createContainer 方法,以创建设置容器。此示例创建名为 exampleContainer
的设置容器并添加名为 exampleSetting
的设置。如果尚不存在,则来自 ApplicationDataCreateDisposition 枚举的 Always | always 值指示应创建容器。
使用 ApplicationDataContainer.Values | values 属性以访问 exampleContainer
容器中的 exampleSetting
设置。
调用 ApplicationDataContainer.DeleteContainer | deleteContainer 方法以在完成时删除 exampleContainer
设置容器。
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
// Create a setting in a container
Windows.Storage.ApplicationDataContainer container =
localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);
if (localSettings.Containers.ContainsKey("exampleContainer"))
{
localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}
// Read data from a setting in a container
bool hasContainer = localSettings.Containers.ContainsKey("exampleContainer");
bool hasSetting = false;
if (hasContainer)
{
hasSetting = localSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
}
// Delete a container
localSettings.DeleteContainer("exampleContainer");