Hacer que los datos sean persistentes en Android


En mi aplicación,hay algunas configuraciones específicas de la aplicación, que deberían estar disponibles para mí la próxima vez que se inicie mi aplicación.

En otras palabras, quiero que los datos estén disponibles en todas las sesiones de un ciclo de aplicación.

Esto se puede lograr sin usar database(sqlite).

Author: Janusz, 2010-07-22

2 answers

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

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

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

  2. Preferencias manejadas por la actividad: Estas preferencias solo se pueden usar 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, que puede ser uno personalizado (1) o el archivo predeterminado (2).

(1) Así es como obtiene la instancia cuando desea especificar 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 el archivo creado será accedido solo por la aplicación que llama. Otros dos modos soportados 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 el caso de MODE_WORLD_WRITEABLE otras aplicaciones también tienen permisos de escritura para el archivo creado.

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

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

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

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

Para almacenar valores en el objeto archivo de preferencias SharedPreference.Editor debe usarse. Editor es la interfaz anidada de la clase SharedPreference.

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

El editor también admite 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 privadas de actividades. 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.

Siguiente es 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 usar otros métodos como almacenar el estado de la 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 preferencias de la aplicación.

Para ver algunos ejemplos más, verifique el almacenamiento de datos de Android en el sitio de desarrolladores.

 99
Author: Pentium10,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-24 11:05:47

Debe usar preferencias compartidas:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("my_pref", "my_value").commit();

Y para recuperarlo:

String value = prefs.getString("my_pref", "default Value");

Estas preferencias son persistentes, y también están integradas con las actividades de preferencias.

 18
Author: SirDarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-13 20:57:06