Friday, June 3, 2016

Howto #001 ¿Como grabar Shared Preferences en Android?

¿Que son las "Shared Preferences" y por qué podríamos necesitarlas en Android?

Las shared preferences es un mecanismo que nos ofrece Android para grabar algunas datos....

Cuando la cantidad de datos que queremos grabar es poca, por ejemplo, preferencias del usuario, utilizar las shared preferences son una buena opción.

Podemos agregar que se graban en XML, y además que la clase que debemos utilizar se llama SharedPreferences.

Veamos en el ejemplo de nuestra aplicación "ChessLab" un ejemplo del uso de shared preferences

Comencemos

El objetivo de la aplicación es que podamos grabar el progreso de la persona que está resolviendo os problemas de Ajedrez. En la siguiente pantalla:


La persona esta mirando el Ejercicio #6 de la Serie "Mate en 3".  Si la persona cierra la aplicación el teléfono, nos gustaría que lo pueda volver a abrir en el mismo punto que lo cerro. Para esto vamos a grabar una "Shared Preference" con el último problema que está revisando el usuario.




Paso 01: Elegimos el evento del ciclo de vida

En vez de utilizar un evento de usuario, como un click/tap sobre una opción, vamos a elegir un evento del ciclo de vida

Utilizaremos el evento "onPause" para grabar el último problema que el usuario había visto, y "onResume" para recuperar el estado:





En el código:

   
@Override
public void onResume()
{
super.onResume();

Log.d(TAG, "onResume");

MainContentSingleton.getInstance().doState_recover(this);
}

@Override
public void onPause()
{
super.onPause();

Log.d(TAG, "onPause");

MainContentSingleton.getInstance().doState_persist(this);

}


   
public void doState_persist(AppCompatActivity activity) {

Log.d(TAG, "doState_persist()");

SharedPreferences mySettings = activity.getSharedPreferences(MY_SETTINGS_NAME, Context.MODE_PRIVATE);

SharedPreferences.Editor editor = mySettings.edit();

editor.putString(MY_SETTINGS_KEY_COLLECTION, MATE_COLLECTION);
editor.putInt(MY_SETTINGS_KEY_IDX, idx);

Log.d(TAG, "doState_persist(): ["+MATE_COLLECTION+", "+idx+"]");

editor.apply(); // commit in an async way
}


public void doState_recover(AppCompatActivity activity) {

Log.d(TAG, "doState_recover()");

SharedPreferences mySettings = activity.getSharedPreferences(MY_SETTINGS_NAME, Context.MODE_PRIVATE);

String SAVED_COLLECTION = mySettings.getString(MY_SETTINGS_KEY_COLLECTION, KEY_MATE_1_COLLECTION);
int SAVED_IDX = mySettings.getInt(MY_SETTINGS_KEY_IDX, 0);

Log.d(TAG, "doState_recover(): ["+SAVED_COLLECTION+", "+SAVED_IDX+"]");


doInit(activity, SAVED_COLLECTION, SAVED_IDX);
}

Demo

Veamos el ejercicio en acción: la aplicación se cierra en el ejercicio número 5 de la serie "Mate en 2" y cuando se vuelve a abrir, la misma se encuentra en la misma posición.



Con esto logramos el primer objetivo.

¿Dónde se graban las Shared Preferences?

¿Como podemos ver el archivo donde se graban las shared prefernces en Android?

Vamos al ADM:
y buscamos un directorio similar a:

/data/data/com.your.package/shared_prefs/com.your.package_preferences.xml


Y luego, el archivo XML con el contenido grabado por las Shared Preferences:


Con este ejemplo, damos por cerrado el post, cumpliendo con el objetivo de entender que son, cmo se graban y como se recuperan las shared preferences.


¿Como seguimos?

Si quieren profundizar el tema de Settings en Android, se puede seguir el siguiente post sobre como agregar la sección de Settings a nuestra App en Android.

Ejemplo:
http://elbauldeandroid.blogspot.com.ar/2014/01/settings.html#tres




Labels: ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home