Shared Preferences: Preferencias en Android

Hoy veremos como utilizar Shared Preferences, hemos visto muchas cosas a lo largo de los cursos que hemos realizado en esta web, pero debido a que muchos usuarios tienen algunas confusiones en este tema, me he visto en la necesidad de hacer este tutorial sencillo pero muy didáctico para cubrir todas las dudas.
Las preferencias no son mas que datos de una aplicación guardadas en el movil de forma que se puedan utilizar en otro momento, vimos en lo particular que habia otra formas de guardar  datos de forma local como lo son las base de datos SQLite. Sin embargo la diferencia es que shared preferences guarda los datos en un fichero XML mientras que SQLite lo hace en un fichero binario.

Como implementar Shared Preferences: Preferencias en Android

 

sharedpreferences

Cosas que deberías saber sobre Shared Preferences:
Toda la gestión se centraliza en la clase SharedPrefences, que representará a una colección de preferencias. Una aplicación Android puede gestionar varias colecciones de preferencias, que se diferenciarán mediante un identificador único. Para obtener una referencia a una colección determinada utilizaremos el método getSharedPrefences() al que pasaremos el identificador de la colección y un modo de acceso. El modo de acceso indicará qué aplicaciones tendrán acceso a la colección de preferencias y qué operaciones tendrán permitido realizar sobre ellas. Así, tendremos tres posibilidades principales:

MODE_PRIVATE. Sólo nuestra aplicación tiene acceso a estas preferencias.
MODE_WORLD_READABLE. Todas las aplicaciones pueden leer estas preferencias, pero sólo la nuestra puede modificarlas.
MODE_WORLD_WRITABLE. Todas las aplicaciones pueden leer y modificar estas preferencias.

 

Implementar SharedPreferences

Para implementar una nueva preferencia llamaremos a la clase  SharePreferences  y haremos referencias con un nombre en mi caso le pondré “MisPreferencias” luego debemos guardar nuestros datos, estos datos deben tener un nombre que servirá de identificador + el dato a guardar algo como te muestro en el siguiente código:

// Llamamos a la clase SharedPreferences y le ponemos un identificador "MisPreferencias"
SharedPreferences preferences = getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
// nombre dato + dato a guardar
editor.putString("Nombre", "ANDROFAST");
editor.putInt("Edad", 25);

 

Obtener los datos de SharedPreferences

Si te fijaste bien guardamos dos datos de tipos diferentes uno es una cadena y el otro un entero estos datos lo mostrare en unos textview pasándolo por un settext pero antes debemos asignarlos a unas variables indicándoles el tipo de variable para cada una de ellas como te muestro en el siguiente código:

String   NOMBRE =preferences.getString("Nombre","");
int   EDAD =preferences.getInt("Edad",0);
nombre.setText("El nombre es: "+NOMBRE);
edad.setText(String.valueOf("La edad es: "+EDAD));

 

El código completo seria el siguiente:

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView nombre,edad;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nombre =(TextView)findViewById(R.id.txtNombre);
        edad =(TextView)findViewById(R.id.txtEdad);
        
        SharedPreferences preferences = getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        
        editor.putString("Nombre", "ANDROFAST");
        editor.putInt("Edad", 25);


        String   NOMBRE =preferences.getString("Nombre","");
        int   EDAD =preferences.getInt("Edad",0);
        nombre.setText("El nombre es: "+NOMBRE);
        edad.setText(String.valueOf("La edad es: "+EDAD));
    }
}

No te preocupes al final te dejare el ejercicio completo para la descarga, pero antes me gustaría explicarte donde se guarda este fichero XML como te decía lineas arriba. Luego de ejecutar la aplicación en nuestro android studio 3.x debemos ir a nuestro explorador de archivos del DMMS el cual se encuentra en la parte inferior derecha como te muestro en la siguiente imagen:

Luego en esa ventana que se nos habrá debemos buscar la ruta de nuestro archivo xml

/data/data/paquete.java/shared_prefs/nombre_del_archivo.xml

En mi caso seria algo como esto:

/data/data/com.androfast.server.appsharepreferencesbasico/shared_prefs/MisPreferencias.xml

Si hacemos anti clic sobre este fichero desde el DDMS y lo abrimos veremos un contenido como el siguiente:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="Nombre">ANDROFAST</string>
    <int name="Edad" value="25" />
</map>

En este XML podemos observar cómo se han almacenado las dos preferencias de ejemplo que insertamos anteriormente, con sus datos y tipo de datos correspondientes.

Y nada más, así de fácil y práctico. Con esto hemos aprendido una forma sencilla de almacenar datos dentro de nuestro movil sin la necesidad de utilizar algun gestor de base de datos como SQLite.. y se que te mueres por preguntar los siguiente:

Si reinicio mi móvil se borra mis SharedPreferences?

La respuesta es no, pues se queda guardado como un fichero xml y lo puede utilizar cuantas veces quieras hasta que elimine totalmente la aplicación de tu móvil.

Sin mas que decirte te dejo la aplicación completa para su descarga:

 

0

Hola soy Alex Céspedes  fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

WhatsApp chat