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?

¿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","[]"); 

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.

  • Android: guarda Object to SharedPreferences y lo consigue en cualquier lugar de la aplicación.
  • Android: obtiene los elementos de la matriz de cadenas y muestra uno por uno en la vista de texto
  • Android SharedPreferences sin guardar
  • SharedPreferences Valor largo
  • Cómo guardar un mapa hash en Preferencias compartidas
  • Android: el valor de la cadena no está entrando en Preferencias compartidas
  • Java.lang.String no se puede convertir en com.example.expandablelistview.NewsItem
  • Cómo guardar un paquete completo en SharedPreferences
  • Ajuste del sonido para la notificación
  • SharedPreferences no guarda valor
  • Inicie la aplicación de Android con actividad específica
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.