Inicio rápido: datos móviles de aplicaciones (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Obtén información sobre el almacenamiento y la recuperación de configuración y archivos desde el almacén de datos móviles de aplicaciones. Para obtener información sobre los datos móviles de aplicaciones y los motivos por los que conviene usarlos, consulta Datos móviles de aplicaciones.

Registrarse para recibir notificaciones cuando cambian los datos móviles

En este ejemplo se establece datachangeHandler como el controlador de los cambios en los datos móviles.


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

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

Obtener los contenedores para los archivos y la configuración de la aplicación

Usa la propiedad ApplicationData.roamingSettings para obtener la configuración y la propiedad ApplicationData.roamingFolder para obtener los archivos.

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

En los siguientes pasos se usan las variables roamingSettings y roamingFolder de este paso.

Escribir datos en una configuración

Usa la propiedad ApplicationDataContainer.values para obtener acceso a la configuración en el contenedor roamingSettings que obtuvimos en el paso anterior. Este ejemplo crea una opción de configuración denominada exampleSetting y una opción de configuración HighPriority indicada para la transferencia de información para la que el tiempo es fundamental, como el estado de la aplicación.

// Simple setting

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

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

Un objeto ApplicationDataCompositeValue contiene configuraciones a las que debe obtenerse acceso de forma atómica. En este ejemplo se crea una configuración compuesta llamada exampleCompositeSetting y se la agrega al contenedor roamingSettings.

// Composite setting

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

roamingSettings.values["exampleCompositeSetting"] = composite;

Llama al método ApplicationDataContainer.CreateContainer para crear un contenedor de configuraciones. En este ejemplo se crea un contenedor de configuraciones denominado exampleContainer y se agrega una configuración llamada exampleSetting. El valor Always de la enumeración ApplicationDataCreateDisposition indica que el contenedor se crea si no existe ya.

Después de cambiar una configuración en el almacén de datos móviles de aplicaciones, el sistema operativo envía el 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";
}

Leer datos desde una configuración

Usa la propiedad ApplicationDataContainer.values para obtener acceso a la configuración exampleSetting en el contenedor roamingSettings.

// Simple setting

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

Usa la propiedad ApplicationDataContainer.values para obtener acceso a la configuración exampleCompositeSetting en el contenedor roamingSettings.

// Composite setting

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

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

Usa la propiedad ApplicationDataContainer.values para obtener acceso a la configuración exampleSetting en el contenedor exampleContainer.

// Setting in a container

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

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

Escribir datos en un archivo

Usa las API de archivo, como Windows.Storage.StorageFolder.createFileAsync y Windows.Storage.FileIO.writeTextAsync, para crear y actualizar un archivo en el almacén de datos de aplicación móviles. En este ejemplo se crea un archivo llamado dataFile.txt en el contenedor roamingFolder y se escriben la fecha y la hora actuales en el archivo. El valor replaceExisting de la enumeración CreationCollisionOption indica que se reemplace el archivo si ya existe.

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

Leer datos desde un archivo

Usa las API de archivo, como Windows.Storage.StorageFolder.getFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync y Windows.Storage.FileIO.readTextAsync para abrir y leer un archivo en el almacén de datos móviles de aplicaciones. En este ejemplo se abre el archivo dataFile.txt creado en el paso anterior y se lee la fecha en él. El valor openIfExists de la enumeración CreationCollisionOption indica que el archivo debe existir. Para obtener información detallada sobre la carga de recursos de archivos de varias ubicaciones, consulta Cómo cargar recursos de archivos.

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

Eliminar configuraciones cuando se termine con ellas

Llama al método ApplicationDataContainerSettings.remove para eliminar la configuración exampleSetting del contenedor roamingSettings cuando hayas terminado.

// Simple setting

roamingSettings.values.remove("exampleSetting");

Llama al método ApplicationDataCompositeValue.remove para eliminar la configuración compuesta exampleCompositeSetting del contenedor roamingSettings cuando hayas terminado.

// Delete composite setting

roamingSettings.values.remove("exampleCompositeSetting");

Llama al método ApplicationDataContainer.deleteContainer para eliminar el contenedor de configuraciones exampleContainer cuando hayas terminado.

// Delete container

roamingSettings.deleteContainer("exampleContainer");

Observaciones

Cada aplicación tiene una cuota de datos móviles de aplicaciones. Consulta la propiedad ApplicationData.roamingStorageQuota para determinar el tamaño total que se permite para los datos móviles de aplicaciones. Si el perfil móvil de datos supera la cuota, no se usará hasta que su tamaño vuelva a ser menor que la cuota.

Temas relacionados

Tarea

Cómo cargar recursos de archivos

Inicio rápido: datos de aplicación local

Inicio rápido: datos de aplicación temporales

Conceptual

Acceder a datos de aplicaciones con Windows en tiempo de ejecución

Directrices

Directrices para datos móviles de aplicaciones

Referencia

Windows.Storage.ApplicationData

Windows.Storage.ApplicationDataCompositeValue

Windows.Storage.ApplicationDataContainer

Windows.Storage.ApplicationDataContainerSettings

Muestras

Ejemplo de los datos de la aplicación