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.
- Llamada múltiple a startforeground?
- ¿Cómo detener el servicio de otra actividad en Android?
- No se puede resolver Manifest.permission.ACCESS_FINE_LOCATION
- Servicio Android + cuenta atrás = no funciona
- ¿Cómo puedo eliminar una notificación de primer plano en Android Lollipop?
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!
- takePicture falló en lollipop
- Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
- ¿Android mata cada servicio o el proceso entero?
- El servicio de Google Geocoder no es viable (Coordenadas a la dirección)
- AlarmManager que repite la alarma que falta al azar cuando el teléfono no está en uso
- Cómo obtener datos de un servicio sin consolidar en Android
- Hilos de aplicación vs Hilos de servicio
- Android: Multithreading-Bluetooth SPP / RFCOMM-Cómo mantener activo mi BluetoothSocket y OutputStream al cambiar Actividades
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.
- Cómo obtener IMSI de Android teléfono?
- Cómo deshabilitar el botón de inicio en Android como las aplicaciones de pantalla de bloqueo hacer?