¿Cuál es la mejor manera de hacer "la configuración de la aplicación" en Android?

Me gustaría almacenar algunas configuraciones de aplicación (como la URL de una API y algunas configuraciones para probar) para una aplicación de Android.

Trabajo sobre todo como revelador de .NET , así que estoy acostumbrado a usar el archivo app.config para este propósito. ¿Cuál es una buena manera de hacerlo en Android?

Muchas aplicaciones pueden proporcionar una forma de capturar las preferencias del usuario en los ajustes de una aplicación específica o de una actividad. Para apoyar esto, Android proporciona un conjunto simple de API.

Las preferencias son típicamente pares de valores de nombre. Pueden almacenarse como "Preferencias compartidas" en varias actividades de una aplicación (tenga en cuenta que actualmente no se puede compartir entre procesos). O puede ser algo que necesita ser almacenado específico para una actividad.

  1. Preferencias compartidas: las preferencias compartidas pueden ser utilizadas por todos los componentes (actividades, servicios, etc.) de las aplicaciones.

  2. Preferencias manejadas por la actividad: Estas preferencias sólo se pueden utilizar con en la actividad y no pueden ser utilizadas por otros componentes de la aplicación.

Preferencias compartidas:

Las preferencias compartidas se gestionan con la ayuda del método getSharedPreferences de la clase Context . Las preferencias se almacenan en un archivo predeterminado (1) o se puede especificar un nombre de archivo (2) para referirse a las preferencias.

(1) Aquí se muestra cómo se obtiene la instancia cuando se especifica el nombre del archivo

 public static final String PREF_FILE_NAME = "PrefFile"; SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

MODE_PRIVATE es el modo de funcionamiento de las preferencias. Es el modo predeterminado y significa que sólo se accederá al archivo creado por la aplicación que llama. Los otros dos modos admitidos son MODE_WORLD_READABLE y MODE_WORLD_WRITEABLE . En MODE_WORLD_READABLE otra aplicación puede leer el archivo creado pero no puede modificarlo. En caso de MODE_WORLD_WRITEABLE otras aplicaciones también tienen permisos de escritura para el archivo creado.

(2) La forma recomendada es utilizar el modo predeterminado, sin especificar el nombre del archivo

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

Finalmente, una vez que tenga la instancia de preferencias, aquí es cómo puede recuperar los valores almacenados de las preferencias:

  int storedPreference = preferences.getInt("storedInt", 0); 

Para almacenar valores en el archivo de preferencia se debe utilizar el objeto SharedPreference.Editor . Editor es la interfaz anidada de la clase SharedPreference .

 SharedPreferences.Editor editor = preferences.edit(); editor.putInt("storedInt", storedPreference); // value to store editor.commit(); 

Editor también soporta métodos como remove() y clear() para eliminar el valor de preferencia del archivo.

Preferencias de actividad:

Las preferencias compartidas pueden ser utilizadas por otros componentes de la aplicación. Pero si no necesita compartir las preferencias con otros componentes y desea tener preferencias de actividades privadas. Puede hacerlo con la ayuda del método getPreferences() de la actividad. El método getPreference utiliza el método getSharedPreferences() con el nombre de la clase de actividad para el nombre del archivo de preferencias.

A continuación se muestra el código para obtener preferencias

 SharedPreferences preferences = getPreferences(MODE_PRIVATE); int storedPreference = preferences.getInt("storedInt", 0); 

El código para almacenar valores también es el mismo que en el caso de las preferencias compartidas.

 SharedPreferences preferences = getPreference(MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("storedInt", storedPreference); // value to store editor.commit(); 

También puede utilizar otros métodos como almacenar el estado de actividad en la base de datos. Nota Android también contiene un paquete llamado android.preference . El paquete define las clases para implementar la interfaz de usuario de las preferencias de aplicación.

Para ver algunos ejemplos más compruebe la publicación Almacenamiento de datos de Android en el sitio de desarrolladores.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.