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