Cuando pensamos en realizar alguna de nuestras aplicaciones nos damos cuenta que necesitamos guardar cierta información en el propio dispositivo móvil.
Para solucionar este problema tenemos diferentes opciones, una de ellas son las Shared Preferences. Las Shared Preferences nos permiten almacenar datos en el típico formato clave/valor, el guardado se realiza en un fichero, del que Android se encargará de gestionar la apertura, cierre, lectura, escritura, etc. El fichero será accesible desde cualquier punto de nuestra aplicación pero no se podrá acceder desde otras aplicaciones.
A diferencia de otras formas de guardar datos, las Shared Preferences no se eliminan al pausar o parar la aplicación y tampoco si reiniciamos el dispositivo. Pero tenemos que tener en cuenta que esta pensado para guardar solo pequeñas cantidades de datos.
Normalmente lo utilizamos cuando queremos guardar configuraciones del usuario o pequeñas informaciones que queremos que no se eliminen.
Vamos a ver un ejemplo muy sencillo de como guardar y recuperar datos.
Primero de todo en nuestra activity debemos añadir las siguientes variables
private SharedPreferences miSP;
private String spFichero = "file.sharedprefences";
Primero de todo creamos una variable de tipo SharedPreferences y una de tipo String, que será el nombre de fichero que le daremos nosotros.
En la función onCreate añadiremos la siguiente línea después de haber cargado nuestro layout
miSP= getSharedPreferences(spFichero, MODE_PRIVATE);
Con esta función utilizamos el gesto de Android para abrir el fichero de las Shared Preferences.
Cuando queramos escribir un valor en nuestro fichero deberemos añadir el siguiente código :
SharedPreferences.Editor miEditor = miSP.edit();
miEditor.putInt("MY_KEY1", 42);
miEditor.putString("MY_KEY2", "Hola Mundo");
miEditor.apply();
Para añadir datos debemos crear una instancia del Editor del SharedPreferences. Una vez tenemos la instancia podemos utilizar putInt, putString o alguna de las otras que existen. A estas funciones les pasamos una clave (primer parámetro) y su valor (segundo parámetro)
Por último debemos aplicar los cambios (apply() ),
Cuando queramos leer valores de nuestro fichero Shared Preferences deberemos añadir el siguiente código :
Integer num = miSP.getInt("MY_KEY1", 0);
En este caso sobre el objeto que tenemos de Shared Preferences llamamos a la función getInt o la correspondiente en función del tipo de valor que estamos recuperando. Como parámetros le pasamos la clave (la misma que hayamos utilizado para guardar) y un valor por defecto.
Y con esto ya tenemos el código para leer y escribir en los Shared Preferences