[Windows Phone 8.1] Application Data APIs

Folder-Edit-01Introducción

Entre la gran cantidad de novedades recibidad en el SDK de Windows Phone 8.1 brillan con fuerza las APIs de Application Data. Nuevas APIs que brindan mas opciones y que en su mayoría se alinean mucho con las APIs ya existentes en Windows Runtime (WinRT). Algo que permite a los desarrolladores Windows Store dar el salto con facilidad a Windows Phone además de permitir compartir código con facilidad.

En esta entrada vamos a analizar las novedades en las APIs de Application Data.

¿Te apuntas?

Application Data APIs

Tanto en aplicaciones Silverlight 8.1 como en aplicaciones Windows XAML tenemos disponible las siguientes carpetas:

  • LocalFolder: Un viejo conocido. Ya lo teníamos disponible en Windows Phone 8 e incluso era la carpeta usada como Isolated Storage desde Windows Phone 7. Guardaremos información que persiste entre actualizaciones de la aplicación y entra dentro de los datos guardados al realizar un backup del sistema.
var localFolder = ApplicationData.Current.LocalFolder;
var file = await roamingFolder.CreateFileAsync("file.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Ejemplo archivo en LocalFolder");
  • RoamingFolder: Almacenamiento muy útil. Al guardar datos en RoamingData, la información estará disponible en todos los dispositivos donde la aplicación este instalada (con el mismo id). Ideal para guardar la configuración de la aplicación y mantenerla sincronizada entre la aplicación Windows Phone y la Windows Store por ejemplo.
var roamingFolder = ApplicationData.Current.RoamingFolder;
var file = await roamingFolder.CreateFileAsync("file.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Ejemplo archivo en RoamingFolder");

Podemos controlar cuando los datos de roaming han sido cambiados en alguna de las aplicaciones gracias al evento DataChanged.

Windows.Storage.ApplicationData.Current.DataChanged +=
      new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
 
private async void DataChangedHandler(ApplicationData appData, object o)
{
 
}
  • TemporaryFolder: Aqui guardaremos información sin tener la necesidad de borrarla más tarde. La información se guardará entre las distintas sesiones pero cuando el sistema requiera espacio (Ejemplo: poca memoria disponible), eliminará la información.  Es un lugar idóneo donde guardar datos obtenidos de peticiones web, servicios o imágenes por ejemplo.
var tempFolder = ApplicationData.Current.TemporaryFolder;
var tempFile = await roamingFolder.CreateFileAsync("file.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(tempFile, "Ejemplo archivo en TemporaryFolder");

Podemos acceder a ficheros en la carpeta temporal desde XAML utilizando el protocolo “ms-appdata:///temp/”.

<img src="ms-appdata:///temp/file.png" alt="" />

NOTA: La información de TemporaryFolder no se guarda en los Backups realizados al sistema.

Otra de las novedades, esta vez solo disponible en las APIs de Windows Phone 8.1 es LocalCacheFolder. Almacenamiento muy similar a LocalFoler pero con ligeras diferencias. Los datos no se copian nunca al realizar backups.

NOTA: Podemos usar la API solo en Windows Phone, en un proyecto Shared necesitamos definir directivas de compilación para evitar errores.

#if WINDOWS_PHONE_APP
    var localCache = ApplicationData.Current.LocalCacheFolder;
#endif

Más información

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s