Configuración de usuario guardada en SharedPreferences eliminada o perdida entre recargas de la aplicación
Mi aplicación almacena ajustes sencillos en SharedPreferences
funciona bien. Sin embargo, para una persona que ha descargado mi aplicación está teniendo problemas. La configuración de SharedPreferences
se pierde entre cerrar y volver a cargar la aplicación.
¿Podría tener un problema de permisos en algún lugar de su teléfono que está impidiendo que los datos se guarden entre sesiones?
- ¿Preferencias compartidas? Javax.crypto.BadPaddingException: bloque de pad corrompido sólo en algunos dispositivos
- Cómo guardar la lista <Object> a SharedPreferences?
- Cómo cambiar mediante programación la imagen de fondo de una actividad de Android
- Seguridad con SharedPreferences
- Acceso a SharedPreferences mediante métodos estáticos
¿Alguien ha experimentado esto o sabe de alguna razón por la que esto podría estar sucediendo? Estoy teniendo un tiempo muy difícil depurar, no sé por dónde empezar.
// I'm using SharedPreferences Like so: prefs = getSharedPreferences(this.getString(R.string.prefs_name), 0); SharedPreferences.Editor editor = prefs.edit(); editor.putString("accounts", accounts); editor.commit(); //retrieving stored information like: SharedPreferences prefs = getSharedPreferences(this.getString(R.string.prefs_name), 0); String accounts = prefs.getString("accounts","[]");
- Android Wear: accede a las preferencias compartidas para móviles
- Acceder a las preferencias compartidas a través de las actividades
- En preferencias compartidas, cómo almacenar array de cadena en la aplicación android
- Android: las preferencias compartidas se pierden a veces
- Compartido prefrence almacenado valor no funciona con android onCreate ()
- Comportamiento SharedPreferences en Actualizar / Desinstalar
- Guardar matriz de bytes con SharedPreferences
- ¿Cómo actualizar SharedPreferences en android cuando restaura desde un archivo?
Tenemos los mismos problemas con nuestras aplicaciones de Android. Nuestra base de usuarios es bastante grande (varios millones de usuarios) y por nuestras estadísticas se han presentado problemas de aproximadamente 0,2% – 0,3% de usuarios. Parece que no es tanto, pero con nuestra base de usuarios que miles de usuarios.
Después de una larga búsqueda de correcciones de este problema, hemos decidido dejar de usar SharedPreferences
para nuestros proyectos. Estamos utilizando SQLiteDatabase
simple en SQLiteDatabase
lugar, y funciona muy bien.
Tuve el mismo problema. Afortunadamente, tuve acceso al dispositivo y me ayudó a encontrar el problema. En primer lugar, he estudiado el archivo de registro y encontré un error:
W/SharedPreferencesImpl(31354): org.xmlpull.v1.XmlPullParserException: Map value without name attribute: string
Por lo tanto, el archivo de preferencias estaba dañado de alguna manera. He hecho el archivo de preferencias accesible desde el mundo en mi aplicación:
SharedPreferences prefs = context.getSharedPreferences("main", Context.MODE_WORLD_READABLE);
A continuación, tirar el archivo de un dispositivo a otro
adb pull data/data/my.package.name/shared_prefs/main.xml c:\main.xml
Y compruebe el contenido del archivo de preferencias:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string>Paris,France</string> <string name="HideStatusBar">1</string>
El primer parámetro no tiene atributo "nombre". He comprobado un código y encontré que en algunas circunstancias los primeros parámetros se escribieron de la siguiente manera:
SharedPreferences.Editor e = _Prefs.edit(); e.putString(null, paramValue); e.commit()
El nombre era nulo . He arreglado el error y el problema ha desaparecido. Por lo tanto, el error trivial puede corromper completamente archivo de preferencias.
Debe publicar una actualización de la aplicación que guarda temporalmente, borra y vuelve a crear el archivo de preferencias.
Tuve una situación similar. Algunos usuarios tenían no sólo su archivo de preferencias desordenado, sino también su base de datos SQL. Realmente no se puede pedir a la gente para eliminar y reinstalar, pueden perder datos. Pero su aplicación puede respaldarla automáticamente primero, quitar los archivos dañados y, a continuación, poner todo de nuevo.
- Uso del SDK de Android no veo ningún EXIF en mi JPEG
- ? Android: attr / selectableItemBackground con otro fondo existente