¿Cómo eliminar algún par clave / valor de SharedPreferences? He puesto y quito eso de las preferencias.
Respuestas:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Aquí el editor es el editor de preferencias compartidas.
Es importante tener en cuenta que, a menos que esté planeando hacer algo con el valor de retorno de la llamada commit (), no hay absolutamente ninguna razón para usar la llamada commit () sincrónica en lugar de la llamada apply () asincrónica.
Tenga en cuenta que si está llamando a esto desde el hilo principal / UI, la UI se bloquea hasta que se complete el commit (). Esto puede tardar más de unos 100 ms en comparación con unos 5 ms para la aplicación. Puede que no parezca mucho, pero si se hace continuamente a lo largo de una aplicación, sin duda se sumará.
Entonces, a menos que esté planeando hacer algo como esto, con suerte en un hilo separado:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
En su lugar, deberías estar haciendo esto:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
Es muy simple:
private SharedPreferences sharedPreferences() {
return PreferenceManager.getDefaultSharedPreferences(mContext);
}
public void clearSharedPreferences() {
sharedPreferences()
.edit()
.remove(SOME_KEY_1)
.remove(SOME_KEY_2)
.remove(SOME_KEY_3)
.apply();
}
Así es como abordé este problema.
Primero creé una instancia de SharedPreference como
SharedPreferences mobilePreference;
entonces usé esta sharedPreference como
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Aquí "in.bhartisoftwares.amit.allamitappsthree" es el nombre de mi paquete y estoy usando Context.MODE_PRIVATE, porque quiero manipular esta preferencia compartida solo para este nombre de paquete.
Luego, estoy eliminando la sharedPreference seleccionada (la clave de mi sharedPreference es mobileString) de la siguiente manera:
mobilePreference.edit().remove("mobileString").commit();
Vea el código completo a continuación:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Información
Solo verifique que la sharedpref
clase se extienda a Map
por eso hay un remove
método
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Aquí el editor es el editor de preferencias compartidas.