Comment supprimer une paire clé / valeur de SharedPreferences? J'ai mis et je supprime cela de prefs.
Réponses:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Ici, l'éditeur est l'éditeur sharedPreferences.
Il est important de noter qu'à moins que vous ne prévoyiez de faire quelque chose avec la valeur de retour de l'appel commit (), il n'y a absolument aucune raison d'utiliser l'appel synchrone commit () au lieu de l'appel asynchrone apply ().
Gardez à l'esprit que si vous appelez cela à partir du thread principal / UI, l'interface utilisateur est bloquée jusqu'à ce que la validation () soit terminée. Cela peut prendre jusqu'à environ 100 ms, à environ 5 ms pour l'application. Cela peut ne pas sembler beaucoup, mais si cela est fait continuellement tout au long d'une application, cela s'additionnera certainement.
Donc, à moins que vous ne prévoyiez de faire quelque chose comme ça, espérons-le sur un fil séparé:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Vous devriez plutôt faire ceci:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
C'est très 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();
}
Voici comment j'ai abordé ce problème.
J'ai d'abord créé une instance de SharedPreference en tant que
SharedPreferences mobilePreference;
puis j'ai utilisé cette préférence partagée comme
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Ici "in.bhartisoftwares.amit.allamitappsthree" est le nom de mon package et j'utilise Context.MODE_PRIVATE, car je souhaite manipuler cette préférence partagée uniquement pour ce nom de package.
Ensuite, je supprime la sharedPreference sélectionnée (la clé de ma sharedPreference est mobileString) comme suit:
mobilePreference.edit().remove("mobileString").commit();
Voir le code comme complet ci-dessous:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Information
Vérifiez simplement que la sharedpref
classe est étendue à Map
c'est pourquoi il existe une remove
méthode
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Ici, l'éditeur est l'éditeur sharedPreferences.