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