语言: HTML | XAML

快速入门:漫游应用数据 (XAML)

了解如何存储和检索漫游应用数据存储中的设置和文件。 有关漫游应用数据存储以及你为何想使用它的信息,请参阅漫游应用数据

路线图: 本主题与其他主题有何关联?请参阅:

进行注册以在漫游数据发生更改时收到通知

注册 DataChanged 事件。此示例将 DataChangeHandler 设置为用于漫游数据更改的处理程序。


Private Sub InitHandlers()
    AddHandler Windows.Storage.ApplicationData.Current.DataChanged, AddressOf DataChangeHandler
End Sub

Private Sub DataChangeHandler(ByVal appData As Windows.Storage.ApplicationData, ByVal o As Object)
    ' TODO: Refresh your data
End Sub

获取应用的设置和文件容器

使用 ApplicationData.RoamingSettings 属性可以获取设置,使用 ApplicationData.RoamingFolder 属性可以获取文件。


Dim roamingSettings As Windows.Storage.ApplicationDataContainer = Windows.Storage.ApplicationData.Current.RoamingSettings
Dim roamingFolder As Windows.Storage.StorageFolder = Windows.Storage.ApplicationData.Current.RoamingFolder

将数据写入设置

使用 ApplicationDataContainer.Values 属性访问我们在前一部分中获取的 roamingSettings 容器中的设置。此示例创建一个名为 exampleSetting 的设置和一个名为 HighPriority 的设置,后者最适用于传输时间关键信息(例如应用状态)。

注意  HighPriority 设置对 Windows Phone 应用商店应用没有影响。


' Simple setting
roamingSettings.Values("exampleSetting") = "Hello World";
' High Priority setting, for example, last page position in book reader app
roamingSettings.Values("HighPriority") = "65";


ApplicationDataCompositeValue 对象包含必须以原子方式访问的设置。此示例会创建一个名为 exampleCompositeSetting 的复合设置并将它添加到 roamingSettings 容器中。


' Composite setting

Dim composite As New Windows.Storage.ApplicationDataCompositeValue
composite("intVal") = 1
composite("strVal") = "string";

roamingSettings.Values("exampleCompositeSetting") = composite

调用 ApplicationDataContainer.CreateContainer 方法可创建设置容器。此示例创建一个名为 exampleContainer 的设置容器并添加一个名为 exampleSetting 的设置。ApplicationDataCreateDisposition 枚举中的 Always 值指示创建容器(如果尚不存在的话)。


' Setting in a container

Dim container As Windows.Storage.ApplicationDataContainer = 
   roamingSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always)

If roamingSettings.Containers.ContainsKey("exampleContainer") Then
    roamingSettings.Containers("exampleContainer").Values("exampleSetting") = "Hello World"
End If

从设置中读取数据

使用 ApplicationDataContainer.Values 属性可以访问 roamingSettings 容器中的 exampleSetting 设置。


' Simple setting

Dim value As Object = roamingSettings.Values("exampleSetting")

使用 ApplicationDataContainer.Values 属性可以访问 roamingSettings 容器中的 exampleCompositeSetting 设置。


' Composite setting

Dim composite As Windows.Storage.ApplicationDataCompositeValue = 
   CType(roamingSettings.Values("exampleCompositeSetting"), Windows.Storage.ApplicationDataCompositeValue)

If composite Is Nothing Then
   ' No data
Else
   ' Access data in composite("intVal") and composite("strVal")
End If

使用 ApplicationDataContainer.Values 属性可以访问 exampleContainer 容器中的 exampleSetting 设置。


' Setting in a container

Dim hasContainer As Boolean = roamingSettings.Containers.ContainsKey("exampleContainer")
Dim hasSetting As Boolean = False

If hasContainer Then
    hasSetting = roamingSettings.Containers("exampleContainer").Values.ContainsKey("exampleSetting")
End If

将数据写入文件

使用文件 API(如 Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync)在漫游应用数据存储中创建和更新文件。此示例会在 roamingFolder 容器中创建一个名为 dataFile.txt 的文件并将当前日期和时间写入该文件中。CreationCollisionOption 枚举中的 ReplaceExisting 值指示替换该文件(如果存在的话)。


Imports Windows.Globalization.DateTimeFormatting

Private Async Sub WriteTimestamp()
   Dim formatter As DateTimeFormatter = New DateTimeFormatter("longtime")

   Dim sampleFile As StorageFile = Await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting)
   Await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
End Sub

从文件中读取数据

使用文件 API(如 Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync)在漫游应用数据存储中打开和读取文件。此示例会打开在前一部分中创建的 dataFile.txt 文件并从该文件中读取日期。有关从多个位置加载文件资源的详细信息,请参阅如何加载文件资源


Private Async Function ReadTimestamp() As Task
   Try
      Dim sampleFile As StorageFile = Await roamingFolder.GetFileAsync("dataFile.txt")
      Dim timestamp As string = Await FileIO.ReadTtextAsync(sampleFile)
      ' Data is contained in timestamp
   Catch e1 As Exception
      ' Timestamp not found
   End Try
End Function

删除已完成使用的设置

调用 ApplicationDataContainerSettings.Remove 方法可在完成对 exampleSetting 设置的使用之后将其从 roamingSettings 容器中删除。


' Delete simple setting

roamingSettings.Values.Remove("exampleSetting")

调用 ApplicationDataCompositeValue.Remove 方法可在完成对 exampleCompositeSetting 复合设置的使用之后将其从 roamingSettings 容器中删除。


' Delete composite setting

roamingSettings.Values.Remove("exampleCompositeSetting")

调用 ApplicationDataContainer.DeleteContainer 方法可在完成对 exampleContainer 设置容器的使用之后将其删除。


' Delete container

roamingSettings.DeleteContainer("exampleContainer")

跨不同类型的设备漫游数据

如果你发布两个版本的应用(一个版本适用于 Windows 应用商店,另一个版本适用于 Windows Phone 应用商店),你可以在两种不同类型的设备上运行的应用上漫游应用数据。要在不同类型的设备的不同版本的应用上漫游数据,请为每个版本的应用分派相同的程序包系列名称 (PFN)。

有关详细信息,请参阅如何在 Windows 应用商店应用和 Windows Phone 应用商店应用之间漫游数据

备注

每个应用对于漫游应用数据都有一个配额。检查 ApplicationData.RoamingStorageQuota 属性以确定所允许的漫游数据总大小。如果你的漫游数据超过配额,则它将不再漫游,直到其大小再次小于配额。

相关主题

任务
如何加载文件资源
快速入门:本地应用数据
快速入门:临时应用数据
概念
使用 Windows 运行时访问应用数据
指南
漫游应用数据指南
参考
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
示例
应用数据示例

 

 

显示:
© 2015 Microsoft