domingo, 5 de agosto de 2012

Base de Datos: SharedPreferences

Android nos ofrece en su sistema de base de datos el denominado como SharedPreferences. Este sistema nos permite almacenar de forma privada e independiente para cada aplicación, datos simples (String, int, boolean, long y float) en formato clave valor. Para ello tenemos 2 tipos de operaciones: lectura o escritura.

Ejemplo de lectura:

//Creamos una instancia SharedPreferences
SharedPreferences preferences = getSharedPreferences("MY_PREF_NAME", Context.MODE_PRIVATE);
/*Recuperamos un valor SharedPreferences 
DEFAULT_VALUE  --> Valor que será asignado a la variable en caso que no haya ningún valor almacenado en el campo NAME_PREFERENCE_STORAGE.*/
String myValue = preferences.getString("NAME_PREFERENCE_STORAGE", "DEFAULT_VALUE");


Ejemplo de escritura:

//Creamos una instancia SharedPreferences
SharedPreferences preferences = getSharedPreferences("MY_PREF_NAME", Context.MODE_PRIVATE);
//Creamos el Editor de preferencias
SharedPreferences.Editor editor = preferences.edit();
//Añadimos/Modificamos un nuevo campo
editor.putString("NAME_PREFERENCE_STORAGE", value_to_save);
//Confirmamos el cambio/creación. Si no hacemos este último paso nada de lo que hemos hecho será guardado
editor.commit();


Notad, que para invocar el método getSharedPreferences, no hemos usado ningún Context, ni nada por estilo. Esto es debido a qué:

  • Si estamos en una Activity, MapActivity...cualquier objeto que tenga un Context no hace falta añadirlo ya que se invoca por defecto.
  • Si estamos fuera del alcance de un Context, por ejemplo, en una clase simple de Java, como podría ser MyUtils.java, hay que pasar el contexto a esa clase/función e invocar las preferencias a partir de la variable Context. Algo así:
          public static String getSharedPreferences (Context context){
                   SharedPreferences preferences = context.getSharedPreferences("MY_PREF_NAME", Context.MODE_PRIVATE);
                   return preferences.getString("NAME_PREFERENCE_STORAGE", "DEFAULT_VALUE");
         }

It works!

Roger Sala,


No hay comentarios:

Publicar un comentario