X

Guardar Conjuntos Clave-Valor

Si tienes una pequeña colección de pares clave-valor que te gustaría guardar, deberías utilizar las APIs SharedPreferences. Un objeto SharedPreferences guarda en un archivo pares de clave-valor y proporciona un método simple para leer y escribir sobre ellos. Cada archivo SharedPreferences se gestiona por el sistema y puede ser privado o compartido.

Esta lección te muestra cómo utilizar las APIs SharedPreferences para almacenar y recuperar valores.

Nota: Las APIs SharedPrefences son únicamente para leer y escribir pares clave-valor y no deberías confundirlas con las APIs Preference, las cuales te ayudan a crear una interfaz de usuario para los ajustes de tu app (aunque esas APIs utilizan también SharedPreferences para su implementación a la hora de guardar los ajustes de la app). Para más información sobre el uso de las APIs Preferences, visita la guía Ajustes.

Obtener un Identificador SharedPreferences

Puedes crear un nuevo archivo SharedPreferences o acceder a uno existente llamando a uno de los dos métodos siguientes:

  • getSharedPreferences() – Utiliza este método si necesitas varios archivos identificados por un nombre, el cual puedes especificar con el primer parámetro. Puedes llamar a este método desde cualquier contexto, Context, en tu app.
  • getPreferences() – Utiliza este método desde una Activity si necesitas utilizar un solo archivo para dicha actividad. Ya que este método recupera un archivo por defecto que pertenece a la actividad, no necesitas suministrar un nombre.

Por ejemplo, el siguiente código se ejecuta dentro de un Fragment. En él, se accede al archivo SharedPreferences identificado por el string R.string.preference_file_key y lo abre utilizando el modo privado para que así sea solo accesible en tu app.

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);

Cuando des nombre a tus archivos SharedPreferences, deberías utilizar un nombre que sea único e identificable, como puede ser com.example.myapp.PREFERENCE_FILE_KEY, donde debes cambiar el nombre de tu paquete y de tu app.

De forma alternativa, si necesitas utilizar un único archivo para tu actividad, puedes utilizar el método getPreferences():

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Precaución: Si creas un archivo SharedPreferences con MODE_WORLD_READABLEMODE_WORLD_WRITEABLE, cualquier app que conozca el identificador del archivo podría acceder a tus datos.

Escribir SharedPreferences

Para escribir en el archivo SharedPreferences, crea un SharedPreferences.Editor llamando al método edit() en tus SharedPreferences.

Pasa las claves y valores que quieras escribir con métodos tales como putInt()putString() en función de si quieres añadir un entero o una cadena de texto. Después llama a commit() para guardar los cambios. Por ejemplo:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

Leer SharedPreferences

Para recuperar valores de un archivo SharedPreferences, llama a métodos tales como getInt()getString, proporcionando la clave para el valor que quieres recuperar, y de forma opcional un valor por defecto si la clave proporcionada recupera un valor null. Por ejemplo:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

Puedes ver más información sobre Guardar Conjuntos Clave-Valor en la página oficial de Google en inglés pulsando aquí.

Los comentarios de Disqus están cargando....