SharedPreferences
SharedPreferences en Android se utilizan para guardar el estado de una actividad o para guardar los datos importantes de una aplicación. Normalmente se usan para almacenar información personal, opciones de presentación, puntajes de un juego, etc.
La principal ventaja de usar SharedPreferences es que los datos que se almacenan alli, permanecen guardados a pesar de cerrar nuestra aplicación o de incluso reiniciar o apagar nuestro móvil.
SharedPreferences tambien se puede utlizar para almacenar los datos de un usuario dentro de una aplicación. Aunque para ello también se pueden utilizar variables globales, el problema de esto es que los datos se pierden una vez que el usuario cierra la aplicación, por eso es recomendable almacenar datos en SharedPreferences.
¿Cómo funciona?
La gestión de estas preferencias se centraliza en la clase SharedPreferences, que representa una colección de preferencias. A la hora de instanciarlas, estas tienen un identificador, que es la clave o nombre que le hayamos puesto nosotros, y un modo de acceso.
Modo de acceso
Para obtener una referencia a una colección determinada utilizaremos el método getSharedPrefences() al que pasaremos el identificador de la colección y un modo de acceso. El modo de acceso indicará qué aplicaciones tendrán acceso a la colección de preferencias y qué operaciones tendrán permitido realizar sobre ellas. Así, tendremos tres posibilidades principales:
MODE_PRIVATE. Sólo nuestra aplicación tiene acceso a estas preferencias.
MODE_WORLD_READABLE. Todas las aplicaciones pueden leer estas preferencias, pero sólo la nuestra puede modificarlas.
MODE_WORLD_WRITABLE. Todas las aplicaciones pueden leer y modificar estas preferencias.
Siendo la primera la más recomendable. Ten en cuenta que han sido declaradas obsoletas desde la API 17 (correspondiente a Android 4.2).
Obteniendo valores de las preferencias
Teniendo todo esto en cuenta, para obtener una referencia a una colección de preferencias llamada por ejemplo “MyPreferences” y como modo de acceso exclusivo para nuestra aplicación haríamos lo siguiente:
SharedPreferences pref = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
Una vez referenciada nuestra colección de preferencias, ahora podemos obtener sus valores mediante el método get y escribir mediante el método put.
Por ejemplo, para obtener el valor de una preferencia llamada “email” de tipo String deberíamos poner lo siguiente:
String email = pref.getString("email", "");
También podemos usar otros metodos como:
getBoolean()
getInt()
getFloat()
getLong()
Escribiendo valores en las preferencias
Para insertar un valor o actualizarlo, hay que hacerlo utilizando el objeto SharedPreferences.Editor.
Una vez referenciado el editor, se ha de realizar un put sobre el tipo de dato básico correspondiente y validamos mediante el método commit(). Siguiendo el ejemplo de email:
SharedPreferences pref = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("email", “[email protected]”); editor.commit();
Y de esta manera hemos creado el valor, si no existía, o actualizado su contenido a “[email protected]” dentro de la preferencia “email”.
Pueden descargar un proyecto de ejemplo aqui y probar el funcionamiento de SharedPreferences:
Obtener código de ejemplo en Github












