100 votes

Comment supprimer une paire clé/valeur de SharedPreferences ?

Comment supprimer une paire clé/valeur de SharedPreferences ? J'ai mis et je veux enlever cela des préférences.

232voto

Yashwanth Kumar Points 12122
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();

Cet éditeur est l'éditeur de sharedPreferences.

12 votes

Un petit complément à cette réponse. Extrait de la documentation d'Android : "Si vous ne vous souciez pas de la valeur de retour et que vous l'utilisez depuis le thread principal de votre application, pensez à utiliser apply() à la place."

3 votes

@silwar , pourquoi avez-vous réédité le apply() en un commit() ? sachant que la documentation dit d'utiliser apply() sauf si l'on veut travailler avec la valeur de retour, et que ni la question ni la réponse ne correspondent à ce cas de figure.

13voto

SBerg413 Points 6605

Il est important de noter que, à 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 cette fonction depuis le thread principal/UI, l'interface utilisateur est bloquée jusqu'à ce que la fonction commit() soit terminée. Cela peut prendre jusqu'à environ 100 ms, contre environ 5 ms pour l'application. Cela peut sembler peu, mais si cela est fait de manière continue dans une application, cela va certainement s'accumuler.

Donc, à moins que vous ne prévoyiez de faire quelque chose comme ça, espérons que ce soit 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();

10voto

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();
}

9voto

SharedPreferences.Editor.remove(key) 
commit();

1 votes

Si vous n'utilisez pas la valeur de retour de la méthode remove, et que vous l'utilisez à partir du thread principal de votre application, envisagez d'utiliser apply() à la place.

3voto

Amit Mhaske Points 170

Voici comment j'ai abordé cette question.

J'ai d'abord créé une instance de SharedPreference en tant que

SharedPreferences mobilePreference;

puis j'ai utilisé cette sharedPreference comme

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);

Ici, "in.bhartisoftwares.amit.allamitappsthree" est le nom de mon paquet et j'utilise Context.MODE_PRIVATE, car je veux manipuler cette préférence partagée uniquement pour ce nom de paquet.

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 complet ci-dessous :

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
    mobilePreference.edit().remove("mobileString").commit();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X