Las preferencias compartidas a veces se eliminan

Mi aplicación utiliza SharedPreferences (con la ayuda de una PreferenceActivity) para almacenar todas las configuraciones. Pero a veces todos los ajustes se eliminan y todos los valores se restablecen a los valores predeterminados. Principalmente en las pestañas de Android 3.x. En los teléfonos inteligentes normales no hay problemas.

He observado que todos los ajustes se eliminan cuando Android mata el proceso de aplicación. Me di cuenta de esto porque el icono de notificación ya no se muestra. También me pregunto por qué el proceso se mata en tabletas y no en teléfonos inteligentes. En mi teléfono inteligente, el icono de notificación nunca desaparece.

Mi aplicación también tiene un servicio, el proceso principal y el servicio de lectura y escritura de configuración a SharedPreferences. A veces me he dado cuenta de que todos los ajustes se borran una vez que el servicio escribe en SharedPreferences. Pero no sucede cada vez.

¿Algunas ideas? Me doy cuenta de que SharedPreferences no debe ser utilizado por diferentes procesos, pero funciona en todos los teléfonos inteligentes sin problemas!

Descubrí la razón por la que los ajustes desaparecen: Si dos procesos escriben datos en SharedPreferences, puede suceder que todas las SharedPreferences se restablezcan a valores predeterminados. En mi caso, todos los ajustes se borran cuando el servicio escribe los primeros datos en SharedPreferences.

Ahora, el servicio sólo proporciona acceso de lectura a SharedPreferences. Las configuraciones a las que acceden ambos procesos de escritura se almacenan en una base de datos.

He tenido el mismo problema. Todos los valores de las preferencias compartidas se convierten en predeterminados si un valor de vez en cuando se escribe con key = null . Esto es posible cuando se crean nuevas constantes usando Eclipse, que las inits con null por defecto, y luego se olvidó de ir al principio de la clase y cambiar constante a algún valor significativo. Si continúa utilizando la aplicación, la operación de lectura de las preferencias compartidas devolverá valores válidos. Pero cuando se cambia el contexto (por ejemplo, cuando la actividad se mata por android y se vuelve a crear) todos los valores de las preferencias compartidas devolverán valores predeterminados (ceros).

Así que compruebe las claves de sus preferencias compartidas! Espero que esta respuesta ayude a alguien.

SharedPreferences normalmente funciona muy bien y como usted ha mencionado sin ningún problema en los teléfonos inteligentes. También debería funcionar en tabletas. Sin embargo, sería mejor utilizar sqlite o el respaldo de sus prefs compartidos en un servidor para cada pérdida de datos de identificación de usuarios es un problema.

  • Reinicio automático de la aplicación tras la actualización del mercado
  • ¿Cómo inicio un servicio que se define en un paquete diferente?
  • Definición de la política de SELinux para el servicio del sistema Android: cómo configurar?
  • Cómo detener el servicio de su propia notificación de primer plano
  • AlarmManager y BroadcastReceiver en lugar de servicio - ¿es eso malo? (Se acabó el tiempo)
  • ((Botón)) dentro de un servicio no funciona
  • Samsung inhabilita paquetes
  • Mantener el servicio de fondo vivo después de la aplicación de salida del usuario
  • Cómo leer los datos del acelerómetro en Service with Android
  • En la aplicación de facturación V3 Service nullpointer Android
  • ¿Cómo enlazar un servicio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.