Guida introduttiva: Dati mobili dell'app (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Impara ad archiviare e recuperare impostazioni e file dall'archivio dei dati mobili dell'app. Per informazioni sull'archivio dei dati mobili dell'app e sulla sua utilità, vedi Dati mobili dell'app.

Registrarsi per ricevere notifica in caso di modifiche dei dati mobili

Questo esempio imposta datachangeHandler come gestore per le modifiche dei dati mobili.


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

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

Recuperare i contenitori per le impostazioni e i file dell'app

Usa la proprietà ApplicationData.roamingSettings per recuperare le impostazioni e la proprietà ApplicationData.roamingFolder per recuperare i file.

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

Nei passaggi successivi vengono usate le variabili roamingSettings e roamingFolder da questo passaggio.

Scrivere dati in un'impostazione

Usa la proprietà ApplicationDataContainer.values per accedere alle impostazioni nel contenitore roamingSettings recuperato nel passaggio precedente. Questo esempio crea un'impostazione denominata exampleSetting e un'impostazione denominata HighPriorityadatta per il trasferimento di info critiche in termini di tempo, come lo stato dell'app.

// Simple setting

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

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

Un oggetto ApplicationDataCompositeValue contiene le impostazioni a cui è necessario accedere in modo atomico. Questo esempio crea un'impostazione composita denominata exampleCompositeSetting e la aggiunge al contenitore roamingSettings.

// Composite setting

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

roamingSettings.values["exampleCompositeSetting"] = composite;

Chiama il metodo ApplicationDataContainer.CreateContainer per creare un contenitore di impostazioni. Questo esempio crea un contenitore di impostazioni denominato exampleContainer e aggiunge un'impostazione denominata exampleSetting. Il valore Always dall'enumerazione ApplicationDataCreateDisposition indica che il contenitore deve essere creato se non esiste già.

Dopo la modifica di un'impostazione nell'archivio dei dati mobili dell'app, il sistema operativo invia l'evento datachanged.

// 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";
}

Leggere dati da un'impostazione

Usa la proprietà ApplicationDataContainer.values per accedere all'impostazione exampleSetting nel contenitore roamingSettings.

// Simple setting

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

Usa la proprietà ApplicationDataContainer.values per accedere all'impostazione exampleCompositeSetting nel contenitore roamingSettings.

// Composite setting

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

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

Usa la proprietà ApplicationDataContainer.values per accedere all'impostazione exampleSetting nel contenitore exampleContainer.

// Setting in a container

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

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

Scrivere dati in un file

Usa le API per i file, come Windows.Storage.StorageFolder.createFileAsync e Windows.Storage.FileIO.writeTextAsync, per creare e aggiornare un file nell'archivio dei dati mobili dell'app. Questo esempio crea un file denominato dataFile.txt nel contenitore roamingFolder e scrive la data e l'ora correnti nel file. Il valore replaceExisting dall'enumerazione CreationCollisionOption indica che il file deve essere sostituito se già esistente.

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 () {      
      });
}

Leggere dati da un file

Usa le API per i file, come Windows.Storage.StorageFolder.getFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.readTextAsync, per aprire e leggere un file nell'archivio dei dati mobili dell'app. Questo esempio apre il file dataFile.txt creato nel passaggio precedente e legge la data dal file. Il valore openIfExists dall'enumerazione CreationCollisionOption indica che il file deve esistere. Per altri dettagli sul caricamento di risorse di tipo file da varie posizioni, vedi Come caricare risorse di tipo file.

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
      });
}

Eliminare le impostazioni al termine

Chiama il metodo ApplicationDataContainerSettings.remove per eliminare l'impostazione exampleSetting dal contenitore roamingSettings quando hai finito di usarla.

// Simple setting

roamingSettings.values.remove("exampleSetting");

Chiama il metodo ApplicationDataCompositeValue.remove per eliminare l'impostazione composita exampleCompositeSetting dal contenitore roamingSettings quando hai finito di usarla.

// Delete composite setting

roamingSettings.values.remove("exampleCompositeSetting");

Chiama il metodo ApplicationDataContainer.deleteContainer per eliminare il contenitore delle impostazioni exampleContainer quando hai finito di usarlo.

// Delete container

roamingSettings.deleteContainer("exampleContainer");

Osservazioni

Per ogni app esiste una quota per i dati mobili. Verifica la proprietà ApplicationData.roamingStorageQuota per determinare la dimensione totale consentita per i dati mobili. Se i dati mobili superano la quota, non ne verrà eseguito il roaming fino a quando le dimensioni non diventano di nuovo minori della quota.

Argomenti correlati

Attività

Come caricare risorse di tipo file

Guida introduttiva: Dati locali dell'app

Guida introduttiva: Dati temporanei dell'app

Informazioni concettuali

Accesso ai dati dell'app con Windows Runtime

Linee guida

Linee guida per i dati mobili dell'app

Riferimento

Windows.Storage.ApplicationData

Windows.Storage.ApplicationDataCompositeValue

Windows.Storage.ApplicationDataContainer

Windows.Storage.ApplicationDataContainerSettings

Esempi

Esempio di dati dell'applicazione