PDF de programación - Persistencia De Datos en Android

Imágen de pdf Persistencia De Datos en Android

Persistencia De Datos en Androidgráfica de visualizaciones

Publicado el 20 de Octubre del 2018
721 visualizaciones desde el 20 de Octubre del 2018
921,4 KB
27 paginas
Creado hace 1a (07/06/2018)
Introducción
Este capítulo tiene como objetivo presentar la persistencia de los datos en Android.

Los datos persistentes de una aplicación son los datos salvaguardados antes del cierre de la
aplicación de tal forma que puedan ser restaurados posteriormente.

Android proporciona varios mecanismos que permiten gestionar la persistencia de los datos, en
función de la naturaleza de los mismos. Descubriremos los archivos de preferencias, los archivos
estándar y las bases de datos.

Terminaremos viendo los proveedores de contenido que, más allá de la persistencia de los datos,
proporcionan un mecanismo de compartición de datos entre las aplicaciones.

Archivos de preferencias
Android proporciona un framework simple para salvaguardar y restaurar los datos de tipos primitivos.
Estos datos se salvaguardan en archivos con formato XML bajo la forma de pares clave-valor. Estos
archivos se denominan archivos de preferencias.

Estudiaremos en primer lugar cómo preparar un archivo de preferencias, a continuación cómo leer y
escribir datos en él. Terminaremos viendo cómo borrar todos los datos, o parte de ellos, de estos
archivos.

El sistema Android permite visualizar y salvaguardar las preferencias generales del usuario. Toda
aplicación puede adoptar la misma funcionalidad y la misma representación. La jerarquía de
preferencias propuesta puede realizarse directamente en un archivo XML. La implementación de tal
pantalla de preferencias se realiza derivando la clase PreferenceActivity. Desde Android 3.0
fragmentos
(API
de tipoPreferenceFragment para poder, entre otros, mostrar de lado a lado los títulos de las
secciones y de las preferencias que proponen.

conjunta

funciona

forma

clase

esta

11),

con

los

de

1. Preparar el archivo

el

nombre

Por defecto, un archivo de preferencias está asociado a la actividad que lo crea. Este archivo lleva
automáticamente
por
ejemplo: es.midominio.android.miaplicacion.prefsArch1.xml.
La creación y la gestión del archivo de preferencias se realizan a través de un objeto
de tipoSharedPreferences devuelto por el método getPreferences de la clase Activity.
Sintaxis

correspondiente,

completo

actividad

de

la

public SharedPreferences getPreferences (int mode)

Este método recibe como parámetro el modo de acceso que se quiere asignar al archivo tras su
creación. Los valores disponibles para este parámetro son:

Context.MODE_PRIVATE: modo privado. Es el modo por defecto. El archivo sólo puede
leerse desde la aplicación en curso, o una aplicación que comparta el mismo identificador de
usuario.
Context.MODE_WORLD_READABLE: las demás aplicaciones pueden leer el archivo.
Context.MODE_WORLD_WRITEABLE: las demás aplicaciones pueden modificar el archivo.

Ejemplo

SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

También es posible especificar explícitamente otro nombre de archivo. Esto permite crear varios
archivos
el
método getSharedPreferencesespecificando el nombre del archivo como primer parámetro.
Sintaxis

preferencias.

utilizar

Para

ello,

que

hay

de

public abstract SharedPreferences getSharedPreferences (String name,
int mode)

Ejemplo

SharedPreferences prefs =

getSharedPreferences("nombreArchivoPrefs1.xml",
Context.MODE_PRIVATE);

2. Lectura

Los datos contenidos en un archivo de preferencias se almacenan bajo la forma de pares clave-valor.
Tales asociaciones están compuestas:

por una clave que es una cadena de caracteres de tipo String.
por un valor de tipo primitivo: boolean (booleano), float (número de coma
flotante), into long (enteros) o String (cadena de caracteres).
Para
leer los datos contenidos en un archivo de preferencias se utiliza el objeto de
tipoSharedPreferences recuperado anteriormente. Se invoca a continuación a ciertos accesores
que permiten leer individualmente un dato según su tipo.

Sintaxis

public abstract boolean getBoolean (String key, boolean defValue)
public abstract float getFloat (String key, float defValue)
public abstract int getInt (String key, int defValue)
public abstract long getLong (String key, long defValue)
public abstract String getString (String key, String defValue)

El primer parámetro es el nombre de la clave. El segundo parámetro es el valor por defecto que se
quiere devolver si no existe la clave.

Ejemplo

boolean modoWifi = prefs.getBoolean("modoWifi", false);
int contador = prefs.getInt("contador", 0);
String comentario = prefs.getString("comentario", "");
También es posible recuperar todos los datos de golpe utilizando el método getAll.
Sintaxis

public abstract Map<String, ?> getAll ()

Ejemplo

Map<String, ?> valores = prefs.getAll();
Boolean modoWifi = (Boolean)valores.get("modoWifi");
El método contains del objeto SharedPreferences permite verificar la existencia de una clave
dada que se le pasa como parámetro.

Sintaxis

public abstract boolean contains (String key)

Ejemplo

if (prefs.contains("modoWifi")) {
procesamiento();
}

3. Escritura

La escritura de datos en un archivo de preferencias se realiza a través de un objeto

de tipoSharedPreferences.Editor. Este objeto lo devuelve el método edit invocado sobre el
objeto de tipo SharedPreferences recuperado anteriormente.
Sintaxis

public abstract SharedPreferences.Editor edit ()

Ejemplo

SharedPreferences.Editor editor = prefs.edit();
El objeto Editor anterior permite especificar nuevos datos o modificar los datos existentes
borrándolos con los nuevos. Estos métodos permiten escribir individualmente un par clave-valor. De
forma similar a los métodos de lectura, existe un método de escritura por cada tipo primitivo. Estos
métodos reciben como parámetro el nombre de la clave y el valor del dato.

Sintaxis

public abstract SharedPreferences.Editor putBoolean (String key,
boolean value)
public abstract SharedPreferences.Editor putFloat (String key,
float value)
public abstract SharedPreferences.Editor putInt (String key,
int value)
public abstract SharedPreferences.Editor putLong (String key,
long value)
public abstract SharedPreferences.Editor putString (String key,
String value)

Ejemplo

editor.putBoolean("modoWifi", true);
editor.putInt("contador", 42);
editor.putString("comentario", "Esto es un comentario");

los datos no será efectiva en el archivo hasta que se ejecute el

La escritura de
método commit delobjeto Editor.
Sintaxis

public abstract boolean commit ()

Ejemplo

editor.commit();

Preste atención a no olvidarse de llamar al método commit. En efecto, si no realiza esta
llamada, el objeto Editor no sirve de nada; no se registrarán las modificaciones que

contiene.

4. Borrado

El borrado de los datos contenidos en un archivo de preferencias se hace utilizando el
objetoeditor de tipo SharedPreferences.Editor igual que para escribir los datos.
El método remove del objeto Editor permite suprimir un par clave-valor. Se pasa el nombre de la
clave como parámetro.

Sintaxis

public abstract SharedPreferences.Editor remove (String key)

Ejemplo

editor.remove("modoWifi");
El método clear permite borrar todos los datos, es decir, todos los pares clave-valor.
Sintaxis

public abstract SharedPreferences.Editor clear ()

Ejemplo

editor.clear();
Como ocurre con la escritura, es necesario invocar al método commit para registrar los cambios.
También
objeto Editordevuelven este mismo objeto.
Ejemplo

las modificaciones, puesto que

los métodos del

es posible

encadenar

editor.clear().putBoolean("modoWifi", modoWifi).commit();

Cuando se invoca al método commit, el método clear se ejecuta en primer lugar, sea cual
sea la posición de su llamada.

Es posible, por ejemplo, reescribir la línea anterior sin modificar el resultado.

Ejemplo

editor.putBoolean("modoWifi", modoWifi).clear().commit();

Archivos
Como acabamos de ver en la sección anterior, los archivos de preferencias son la solución ideal para
salvaguardar valores de tipos primitivos de manera simple. Pero si lo que se quiere es almacenar datos
más complejos o datos brutos sin un formato adaptado al formato XML como, por ejemplo, la copia de
una imagen con formato PNG, esta solución no es adecuada.

Necesitamos poder crear, escribir y leer archivos directamente.

Android permite guardar archivos en el almacenamiento interno del dispositivo o en un almacenamiento
externo como, por ejemplo, una tarjeta SD. Proporciona también las API para guardar archivos
temporales o archivos de caché en ubicaciones definidas.

Vamos, por tanto, a ver en primer lugar la gestión de archivos en el almacenamiento interno, y en
segundo lugar sobre un almacenamiento externo. Por último, veremos la gestión de los archivos
temporales.

1. Almacenamiento interno

Por defecto, los archivos se almacenan en el almacenamiento interno del dispositivo. El acceso a
estos archivos está restringido a la aplicación. Ni el usuario ni las demás aplicaciones pueden acceder
a él.

Vamos a ver cómo crear un archivo en el almacenamiento interno, cómo leerlo y, por último, cómo
borrarlo.

a. Escritura
La creación de un archivo se realiza invocando al método openFileOutput de la claseContext.
Este método espera recibir dos parámetros: el nombre del archivo sin arborescencia y el modo de
acceso que se quiere asignar a este archivo. El método devuelve un
flujo de
tipoFileOutputStream.
Sintaxis

public abstract FileOutputStream openFileOutput (String name,
int mode)

Ejemplo

FileOutputStream flujo = openFileOutput("miArchivo.png",
Context.MODE_PRIVATE);

El flujo devuelto permite escribir los datos brutos en el archivo utilizando los distintos
métodoswrite.
Si
  • Links de descarga
http://lwp-l.com/pdf13950

Comentarios de: Persistencia De Datos en Android (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad