Las Preferencias compartidas se pierden después de cerrar el dispositivo o de matar la aplicación.
Hay un montón de preguntas por ahí relacionadas con las preferencias compartidas y las alternativas. Mi problema: cuando cierro el dispositivo o mato la aplicación, las preferencias compartidas se pierden. Tenga en cuenta que mi código realmente funciona en Acer A500. Pero en mi Motorola Xoom MZ604 no funciona !!
Primero intento restaurar mi HashSet en onCreate. Este método se llama con seguridad y se implementa en un singleton.
- Cómo pasar el contexto de la aplicación dentro Singleton y SharedPreferences Clases
- Cómo utilizar SharedPreferences en Android para almacenar, buscar y editar valores
- FindPreference devuelve NULL en el prefit nombre pref
- Cómo tratar las preferencias compartidas almacenadas en una biblioteca
- ¿Cómo puedo compartir un archivo SharedPreferences a través de dos aplicaciones de Android diferentes?
public boolean restoreCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); if(settings.getStringSet(context.getString(R.string.collection), null) != null){ collection = settings.getStringSet(context.getString(R.string.collection), null); return true; } collection = new HashSet<String>(); return false; }
Llamando a onDestroy, guardo el HashSet. A pesar de que no se da, que este método se llama con seguridad, las Preferencias se pierden en cualquier caso, he intentado guardarlo en onPause con el mismo resultado.
public void saveCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); SharedPreferences.Editor e = settings.edit(); e.putStringSet(context.getString(R.string.collection), collection); e.commit(); }
¿Ha tenido alguien problemas con las Preferencias Compartidas y el dispositivo XOOM, o también soy el único? Tal vez algo es sospechoso con mi código, pero los datos no se pierden en mi Tablet Acer.
También he intentado PreferenceManager.getDefaultSharedPreferences (context) para obtener el objeto de SharedPreferences
Gracias por su ayuda, Chris
- Mantener más de un archivo de preferencias compartidas en android
- Uso de SharedPreferences con diferentes contextos
- ¿Restablecer SharedPreferences?
- Android: obtiene los elementos de la matriz de cadenas y muestra uno por uno en la vista de texto
- Un botón con el comentario que ya ha hecho clic no se mostrará la próxima vez que el usuario abra la aplicación
- Android: haz algo en actividad cuando cambian las preferencias
- Inicie la aplicación de Android con actividad específica
- El MODE_MULTI_PROCESS de SharedPreferences es menos seguro que MODE_PRIVATE
He descubierto una solución que funciona tanto en mi Acer como en mi dispositivo XOOM: tienes que llamar a clear () en el editor antes de enviar nuevos datos:
public void saveCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); SharedPreferences.Editor e = settings.edit(); e.clear(); e.putStringSet(context.getString(R.string.collection), collection); e.commit(); }
Yo estaba teniendo el mismo problema cuando se utiliza conjunto de cadenas con SharedPreferences. Descubrí por qué sucedía esto y cómo resolverlo.
Es muy importante leer la documentación de la API para SharedPreferences.getStringSet (clave String, Set defValues)
¡No modifique o toque el Conjunto devuelto! Si lo hace obtendrá resultados extraños con SharedPreferences. 🙂
¡Disfrutar!
Su problema parece ser el mismo que se discute aquí para el dispositivo Samsung Galaxy S
corriendo estándar Froyo 2.2.1
. Algunas impresiones de su discusión:
El registro muestra:
01-19 12: 08: 56.856 W / ApplicationContext (4563): Intento de leer el archivo de preferencias /dbdata/databases/com.mobilemerit.ultimatefaves/ shared_prefs / com.mobilemerit.ultimatefaves_preferences.xml sin permiso
Una solución posible parece ser:
Mi usuario parece haber tenido el mismo síntoma.
Él me envió por correo electrónico que él tenía que hacer una fábrica-reajuste a su teléfono debido a otras razones, él reinstaló la aplicación del mercado (algo que no ayudó antes del reajuste), y ahora todo trabaja como esperado.
Otra solución:
Tengo los mismos problemas con mi 2.2.1 Galaxy S (arraigado), lo soluciono eliminando mi carpeta de la aplicación (com.xxx) en \ dbdata \ bases de datos. ¿Alguien tiene el mismo problema en otro teléfono?
Y este tipo realmente encontró la causa de ello:
Instalé mi aplicación (WidgetLocker) y obtuvo app_81, luego desinstalé usando "adb uninstall com.teslacoilsw.widgetlocker" y luego reinstalé y encontré que mis preferencias habían persistido a través de la desinstalación, pero no se denegó permiso de error. Desinstalé de nuevo de la misma manera, esta vez fui al Mercado e instalé Androidify. Esto es cuando las cosas se pusieron interesantes: (…)
Así que Androidify tiene mi uid y mis preferencias ahora son pertenecen a ellos . (…)
Y estamos jodidos …
Hay un informe de error para este problema: http://code.google.com/p/android/issues/detail?id=14359
Google rechazó ese error porque en realidad es un error causado por las modificaciones realizadas por el proveedor para el dispositivo.
Los autores de la aplicación "Beautiful Widgets" le dan a sus usuarios los siguientes consejos:
** SAMSUNG GALAXY S & ANDROID 2.2 **
Hay un error en la actualización de Samsung que impide guardar el archivo de configuración. Necesita restablecer su teléfono (…)
Así que esto debería ayudar.
Responda a esta respuesta, si esto ocurre con el mismo problema en su dispositivo Xoom.
- NullPointerException: Intenta invocar el método virtual 'int java.util.ArrayList.size ()' en una referencia de objeto nulo
- Diferencia entre la tecla Inicio de Android y la tecla Volver y su comportamiento