Introducció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"
);
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"
);
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
- Windows Dev Center: LocalFolder
- Windows Dev Center: RoamingFolder
- Windows Dev Center: TemporaryFolder
- Windows Dev Center: LocalCacheFolder