Aprende Android en 20 conceptos. Empezando a programar para Android

Aprende Android en 20 conceptos. Empezando a programar para Android

Desarrollo y programación

Aprende Android en 20 conceptos: Conceptos 9 y 10

23 marzo, 2014 16:46

Nuevo domingo, nuevo capítulo de Aprende Android en 20 conceptos. Con este artículo de hoy llegamos al ecuador de la sección, habiendo hablado ya de 10 de los 20 conceptos que componían el índice inicial.

Antes de empezar con el concepto 9, cabe mencionar que hoy lo que pretendemos solucionar, tal como hemos comentado antes, es el problema del almacenamiento persistente de datos en nuestra aplicación. Pero además necesitamos decidir si estos datos son privados para nuestra aplicación o pueden ser compartidos por otras aplicaciones.

Para ello, Android nos da las siguientes opciones:

Aparte de todo esto, Android nos proporciona una forma adicional de mostrar nuestros datos privados a otras aplicaciones, con el uso de un Content Provider. Pero eso es algo de lo que hablaremos más adelante.

 

9. Preferencias de una app (Shared Preferences)

La clase SharedPreferences proporciona la funcionalidad general que nos permite guardar y leer tipos de datos primitivos (booleans, floats, ints, longs, strings) en el formato clave-valor. Los datos serán persistentes en todo momento (incluso cerrando la aplicación o cambiando de sesión de usuario).

Cuando queramos hacer uso de esta funcionalidad, lo primero que deberemos es conseguir tener un objeto de dicha clase, para lo cual tendremos que usar uno de los siguientes métodos:

  • getSharedPreferences: Ideal cuando necesitamos varios ficheros de preferencias identificados por nombre, el cual indicaremos como parámetro.
  • getPreferences: Este caso lo utilizaremos cuando sólo necesitamos un fichero de preferencias para nuestra actividad, ya que no necesitaremos indicar ningún nombre.

Si queremos leer valores, utilizaremos métodos getters, tales como getBoolean, getString, getInt…

Pero si queremos escribir datos, deberemos seguir los siguientes pasos:

  1. Llamar al método edit para conseguir un objeto de la clase SharedPreferences.Editor
  2. Añadir todos los valores que queramos con métodos put tales como putBoolean, putString, putInt…
  3. Confirmar los nuevos valores llamando al método commit.

A continuación podéis ver un ejemplo:

También hay que destacar que si lo que queremos es crear preferencias de usuario para nuestra aplicación, podemos utilizar la clase PreferenceActivity, que nos provee funcionalidad para crear preferencias de usuario que serán automáticamente almacenadas de forma persistente, usando precisamente Shared Preferences.

10. Bases de datos SQLite

Las SharedPreferences resultan muy útiles, pero almacenas valores tipo clave-valor muchas veces resulta insuficiente. Para ello tenemos otras alternativas, como es el almacenado de datos estructurados en una base de datos privada, mediante SQLite. Estas bases de datos serán privadas para cada aplicación y ninguna otra tendrá acceso a estos datos.

La forma recomendada de crear una nueva base de datos SQLite es crear una subclase de SQLiteOpenHelper y sobreescribir el método onCreate, en el cual podemos ejecutar comandos SQLite para crear las tablas necesarias en la base de datos. A continuación podemos ver un ejemplo:

Para tener un objeto de la clase creada, basta con que usemos el constructor que hayamos definido. Una vez tengamos el objeto, escribir y leer de la base de datos llamará a los métodos getWritableDatabase y getReadableDatabase, respectivamente. Ambos métodos devolverán un objeto de la clase SQLiteDatabase que representa la base de datos y nos provee los métodos para las operaciones SQLite que queramos.

Para ejecutar operaciones SQLite, utilizaremos los métodos SQLiteDatabasequeryque acepta varios parámetros para nuestra consulta, tales como la tabla, selección… En el caso de que queramos consultas más complejas, también podemos utilizar la clase SQLiteQueryBuilder.

Como resultado a las llamadas anteriores, recibiremos un Cursor que apuntará a las filas encontradas por nuestra consulta. Este Cursor será siempre para nosotros el mecanismo por el que podremos navegar por los resultados de una consulta a base de datos.

Para ir concluyendo, indicar que Android no impone ninguna limitación a parte de las que tengamos ya por el hecho de usar SQLite. Pero sí que se recomienda incluir un valor clave autoincremental para tener un identificador único para cada entrada en nuestra base de datos. De hecho, si quisiéramos usar Content Providers, será obligatorio su uso.

Para ver cómo funcionan las bases de datos SQLite en plena acción, podéis echar un vistazo a los ejemplos que nos proporciona Google.

Y con esto llegamos al ecuador de la sección¿Con ganas de la segunda mitad de Aprende Android en 20 conceptos?

Ver la sección Aprende Android en 20 conceptos