Schnellstart: Roaming von App-Daten (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Hier erfahren Sie, wie Sie Einstellungen und Dateien im Roamingspeicher für App-Daten ablegen und von dort abrufen. Informationen zum Roamingspeicher für App-Daten und zu den Vorteilen seiner Verwendung finden Sie unter Roaming von App-Daten.

Registrieren, um Benachrichtigungen bei der Änderung von Roamingdaten zu erhalten

In diesem Beispiel wird datachangeHandler als Handler für Änderungen an Roamingdaten festgelegt.


var applicationData = Windows.Storage.ApplicationData.current;
 
function initialize() 
{
    applicationData.addEventListener("datachanged", datachangeHandler);
}

function dataChangeHandler(eventArgs)
{
    // TODO: Refresh your data
}

Abrufen der Container für die Einstellungen und Dateien der App

Rufen Sie mit der ApplicationData.roamingSettings-Eigenschaft die Einstellungen und mit der ApplicationData.roamingFolder-Eigenschaft die Dateien ab.

var roamingSettings = applicationData.roamingSettings;
var roamingFolder = applicationData.roamingFolder;

In den nächsten Schritten werden die Variablen roamingSettings und roamingFolder aus diesem Schritt verwendet.

Schreiben von Daten in eine Einstellung

Verwenden Sie die ApplicationDataContainer.values-Eigenschaft, um auf die Einstellungen im Container roamingSettings zuzugreifen, den wir im vorherigen Schritt abgerufen haben. In diesem Beispiel werden eine Einstellung namens exampleSetting und eine Einstellung namens HighPriority erstellt, die am besten dafür geeignet sind, zeitkritische Infos zu übertragen, z. B. den App-Status.

// Simple setting

roamingSettings.values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app

roamingSettings.values["HighPriority"] = "65";

Ein ApplicationDataCompositeValue-Objekt enthält Einstellungen, auf die atomisch zugegriffen werden muss. In diesem Beispiel wird eine Verbundeinstellung namens exampleCompositeSetting erstellt und dem Container roamingSettings hinzugefügt.

// Composite setting

var composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.values["exampleCompositeSetting"] = composite;

Rufen Sie die ApplicationDataContainer.CreateContainer-Methode auf, um einen Einstellungscontainer zu erstellen. In diesem Beispiel wird ein Einstellungscontainer namens exampleContainer erstellt und eine Einstellung namens exampleSetting hinzugefügt. Der Wert Always aus der ApplicationDataCreateDisposition-Enumeration gibt an, dass der Container erstellt wird, sofern er noch nicht vorhanden ist.

Nach dem Ändern einer Einstellung im Roamingspeicher für Anwendungsdaten sendet das Betriebssystem das datachanged-Ereignis.

// Setting in a container

var container = roamingSettings.createContainer("exampleContainer", 
                                                Windows.Storage.ApplicationDataCreateDisposition.Always);

if (roamingSettings.containers.hasKey("exampleContainer"))
{
    roamingSettings.containers.lookup("exampleContainer").values["exampleSetting"] = "Hello World";
}

Lesen von Daten aus einer Einstellung

Verwenden Sie die ApplicationDataContainer.values-Eigenschaft, um auf die Einstellung exampleSetting im Container roamingSettings zuzugreifen.

// Simple setting

var value = roamingSettings.values["exampleSetting"];
        
if (!value)
{
    // No data
}
else
{
    // Access data in value
}

Verwenden Sie die ApplicationDataContainer.values-Eigenschaft, um auf die Einstellung exampleCompositeSetting im Container roamingSettings zuzugreifen.

// Composite setting

var composite = roamingSettings.values["exampleCompositeSetting"];

if (!composite)
{
    // No data
}
else
{
    // Access data in composite["intVal"] and composite["strVal"]
}

Verwenden Sie die ApplicationDataContainer.values-Eigenschaft, um auf die Einstellung exampleSetting im Container exampleContainer zuzugreifen.

// Setting in a container

var hasContainer = roamingSettings.containers.hasKey("exampleContainer");

if (hasContainer)
{
    // Access data in roamingSettings.containers.lookup("exampleContainer").values.hasKey("exampleSetting");
}

Schreiben von Daten in eine Datei

Erstellen und aktualisieren Sie mit den Datei-APIs, z. B. Windows.Storage.StorageFolder.createFileAsync und Windows.Storage.FileIO.writeTextAsync, eine Datei im Speicher für das Roaming für App-Daten. In diesem Beispiel wird im Container roamingFolder die Datei dataFile.txt erstellt, in die das aktuelle Datum und die Uhrzeit geschrieben werden. Der Wert replaceExisting aus der CreationCollisionOption-Enumeration gibt an, dass die Datei ersetzt werden soll, falls sie bereits vorhanden ist.

function writeTimestamp() {
   roamingFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
      .then(function (sampleFile) {
         var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
         var timestamp = formatter.format(new Date());

         return Windows.Storage.FileIO.writeTextAsync(sampleFile, timestamp);
      }).done(function () {      
      });
}

Lesen von Daten aus einer Datei

Öffnen und lesen Sie mit den Datei-APIs, z. B. Windows.Storage.StorageFolder.getFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync und Windows.Storage.FileIO.readTextAsync, eine Datei im Roaming-App-Datenspeicher. In diesem Beispiel wird die im vorherigen Schritt erstellte Datei dataFile.txt geöffnet und das Datum aus der Datei gelesen. Der Wert openIfExists aus der CreationCollisionOption-Aufzählung gibt an, dass die Datei vorhanden sein muss. Einzelheiten zum Laden von Dateiressourcen aus verschiedenen Speicherorten finden Sie unter So wird's gemacht: Laden von Dateiressourcen.

function readTimestamp() {
   roamingFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
         return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
         // Data is contained in timestamp
      }, function () {
         // Timestamp not found
      });
}

Löschen nicht mehr benötigter Einstellungen

Rufen Sie die ApplicationDataContainerSettings.remove-Methode auf, um die Einstellung exampleSetting aus dem Container roamingSettings zu löschen, wenn Sie sie nicht mehr benötigen.

// Simple setting

roamingSettings.values.remove("exampleSetting");

Rufen Sie die ApplicationDataCompositeValue.remove-Methode auf, um die Verbundeinstellung exampleCompositeSetting aus dem roamingSettings-Container zu löschen, wenn Sie sie nicht mehr benötigen.

// Delete composite setting

roamingSettings.values.remove("exampleCompositeSetting");

Rufen Sie die ApplicationDataContainer.deleteContainer-Methode auf, um den Einstellungscontainer exampleContainer zu löschen, wenn Sie ihn nicht mehr benötigen.

// Delete container

roamingSettings.deleteContainer("exampleContainer");

Anmerkungen

Jede App besitzt ein Kontingent für das Roaming von App-Daten. Überprüfen Sie die ApplicationData.roamingStorageQuota-Eigenschaft, um die Gesamtgröße der zulässigen Roamingdaten festzustellen. Überschreiten Ihre Roamingdaten das Kontingent, ist das Roaming erst wieder möglich, wenn der Umfang geringer als das Kontingent ist.

Verwandte Themen

Aufgabe

So wird's gemacht: Laden von Dateiressourcen

Schnellstart: Lokale App-Daten

Schnellstart: Temporäre App-Daten

Konzept

Zugriff auf App-Daten mit der Windows-Runtime

Richtlinien

Richtlinien für das Roaming von App-Daten

Referenz

Windows.Storage.ApplicationData

Windows.Storage.ApplicationDataCompositeValue

Windows.Storage.ApplicationDataContainer

Windows.Storage.ApplicationDataContainerSettings

Beispiele

Beispiel für Anwendungsdaten