miércoles, 11 de mayo de 2016

Persistencia en Android mediante shared preferences













Existen varias de formas de dotar de persistencia a una aplicación Android, pero seguramente la más sencilla y menos engorrosa sea usar Shared Preferences. Cuando hablo de persistencia me refiero a que la configuración o los valores de nuestra aplicación queden guardados, de modo que aunque la cerremos, al volver a iniciarla no se perderán. Por ejemplo, tenemos una aplicación del tiempo (condiciones metereológicas) y queremos que nuestra ciudad quede guardada para próximas consultas. Vamos a ver cómo hacerlo utilizando un ejemplo muy sencillo, ya que sólo guardaremos la variable ciudad (nota: no pongo el código completo de la aplicación por que lo interesante es centrarnos en la parte de la persistencia, así que pongo tres puntos suspensivos para indicar donde iría el resto del código de la aplicación):

Recuperar datos

...
public class MainActivity extends AppCompatActivity {
    public static final String PREFS_NAME = "MyPrefsFile";
    public static SharedPreferences settings;
...
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        settings = getSharedPreferences(PREFS_NAME, 0);
        city = MainActivity.settings.getString("ciudad", "Madrid");
        ...
    }
...

Como vemos, básicamente lo que se hace es llamar a getSharedPreferences para obtener el objeto que guarda las preferencias. Posteriormente obtenemos el valor (si existiera) y lo asignados a la variable city que es la que utilizaremos en la aplicación y cuyo valor podremos modificar si es necesario dentro de nuestra aplicación. 
Nota: en MainActivity.settings.getString(“ciudad”, “Madrid”); el segundo parámetro (“Madrid”), es el valor que se devuelve en caso de que la variable (en este caso “ciudad”) sea nulo.

Guardar datos

protected static void guardarCiudadSettings(){
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("ciudad", city);
        editor.commit();
    }
        

protected void onStop(){
        super.onStop();
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("ciudad", city);
        editor.commit();
    }

Aquí vemos como guardar una determinada variable en los SharedPreferences. En el primer caso se hace desde un método al que podemos llamar cuando queramos desde nuestra aplicación. En el segundo método se llamará al cerrar nuestra aplicación (método onStop()). 

Espero que os sea de utilidad. Para consultar cualquier duda, podéis utilizar los comentarios.




Fuentes:

http://developer.android.com/intl/es/training/basics/data-storage/shared-preferences.html




Sea el primero en comentar

Publicar un comentario

Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO