La clase SharedPreferences proporciona una serie de herramientas que te permiten guardar de manera persistente información, así como recuperarla, que se almacena en forma de pares clave-valor, para los tipos de datos básicos (boolean, float, int, long y String). Estos datos permanecerán almacenados de manera persistente entre distintas sesiones del usuario, e incluso si la aplicación es cerrada y sacada de memoria.

Para crear un objeto SharedPreferences, puedes usar uno de los siguientes métodos:

  • getSharedPreferences(): Usa este método si necesitas varios ficheros de preferencias, identificados por un nombre que indicarás como primer parámetro.
    SharedPreferences getSharedPreferences (String name, int mode)
    El parámetro mode permite indicar el nivel de privacidad de estos valores (MODE_PRIVATEMODE_WORLD_READABLEMODE_WORLD_WRITEABLEMODE_MULTI_PROCESS)
  • getPreferences(): Puedes usar este otro método si sólo necesitas un fichero de valores en la aplicación. En este caso, no hay que indicar un nombre de fichero.
    SharedPreferences getPreferences (int mode)

Para guardar valores debes seguir los siguientes pasos:

  1. Llamar al método edit() para obtener un objeto SharedPreferences.Editor.
    SharedPreferences.Editor edit ()
  2. Con el objeto obtenido, añadir valores con los métodos putBoolean(), putString(), etc. A estos métodos debes asignarle una clave como primer parámetro, y el valor como segundo parámetro.
    SharedPreferences.Editor putInt (String key, int value)
  3. Guardar todos los valores añadidos, usando el método commit().
    boolean commit ()

Para leer los valores almacenados debes usar los métodos getBoolean(), getString(), etc. La llamada a estos métodos debes hacerla con el objeto SharedPreferences que has creado previamente.
int getInt (String key, int defValue)

Como puedes observar, los métodos get... retornan el valor solicitado, que está emparejado con la clave key, y se obtiene el valor por defecto defValue si no hay ningún valor almacenado con la clave indicada.

Aquí puedes ver un posible ejemplo de su uso:

public class Calc extends Activity {
    public static final String NOMBRE_PREFS = "MiFichPref";
 
    @Override
    protected void onCreate(Bundle state){
       super.onCreate(state);
       . . .
 
       // Leer preferencias
       SharedPreferences settings = getSharedPreferences(NOMBRE_PREFS, MODE_PRIVATE);
       boolean silent = settings.getBoolean("modoSilencio", false);
       // En la variable silent tenemos ya el valor para hacer algo con él
       . . .
    }
 
    @Override
    protected void onStop(){
       super.onStop();
 
      // Obtener un objeto Editor object para guardar los cambios de preferencias.
      SharedPreferences settings = getSharedPreferences(NOMBRE_PREFS, MODE_PRIVATE);
      SharedPreferences.Editor editor = settings.edit();
      // La variable mSilentMode tendrá el valor que se quiere almacenar
      editor.putBoolean("modoSilencio", mSilentMode);
 
      // Guardar los cambios
      editor.commit();
   }
}