Cómo cambiar los valores en la preferencia compartida
He creado una aplicación que utiliza una preferencia compartida para que el usuario pueda iniciar sesión. La contraseña del usuario se guarda en la preferencia. Mi problema es, ¿cómo puedo cambiar la contraseña en la preferencia si el usuario quiere cambiar su contraseña?
- SharedPreference Cambios no reflejados en mi servicio de fondo de pantalla
- Sharedpreference byte valor eliminado después de que la aplicación se haya eliminado mediante 'Force Stop' o el administrador de tareas
- Android: el valor de la cadena no está entrando en Preferencias compartidas
- Android Studio - Explorador de archivos de Android Device Monitor no funciona
- Android SharedPreferences Conjunto de cadenas: algunos elementos se quitan después de reiniciar la aplicación
- ¿Por qué preferences.getString ("key", "DEFAULT") devuelve siempre "DEFAULT"?
- Android Almacenamiento interno VS Preferencias compartidas
- Android-maven-plugin: método de despliegue que no elimina SharedPreferences
- Android SharedPreferences en Fragmento
- Android SharedPreferences sin guardar
- SharedUserId: seguro para cambiar cuando la aplicación ya está en el mercado?
- SharedPreferences Valor largo
- Uso de las preferencias compartidas para un ahorro de alto valor
SharedPreferences prefs = ... // you already know how to use prefs and have one of this objects Editor editor = prefs.edit(); editor.putString("password", "new value"); editor.commit();
Utilice apply()
lugar de commit()
Se recomienda que utilice Editor.apply()
lugar de commit()
porque apply()
funciona de forma asincrónica en segundo plano, por lo tanto, es menos probable que haya ANR debido a eso (si es que lo es).
getSharedPreferences("FILE_NAME", 0 /*FILE_MODE*/) .edit() .putString("password", "new value") .apply();
Docs mencionar acerca de apply()
,
Configure sus cambios de preferencias desde este Editor hasta el objeto SharedPreferences que está editando. Esto realiza atómicamente las modificaciones solicitadas, reemplazando lo que está actualmente en SharedPreferences.
Tenga en cuenta que cuando dos editores están modificando las preferencias al mismo tiempo, el último que llame aplica gana.
A diferencia de commit (), que escribe sus preferencias en el almacenamiento persistente de forma sincrónica, apply () confirma sus cambios en SharedPreferences en memoria inmediatamente, pero inicia un commit asincrónico en disco y no se le notificará de ningún error. Si otro editor de SharedPreferences realiza un commit () regular mientras que apply () sigue pendiente, el commit () se bloqueará hasta que todos los commit async se completen, así como el commit mismo.
Como las instancias de SharedPreferences son singletons dentro de un proceso, es seguro reemplazar cualquier instancia de commit () por apply () si ya está ignorando el valor devuelto.
No es necesario preocuparse por los ciclos de vida de componentes de Android y su interacción con apply () escribiendo en disco. El marco asegura que las escrituras de disco en vuelo de apply () estén completas antes de cambiar de estado.