2011-11-07 11 views

Respuesta

147
SharedPreferences mySPrefs =PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = mySPrefs.edit(); 
editor.remove(String key); 
editor.apply(); 

Aquí el editor es el editor de Preferencias compartidas.

+9

Una pequeña adición a esta respuesta. De la documentación de Android: "Si no le importa el valor de retorno y lo está usando desde el hilo principal de su aplicación, considere usar apply()". –

+1

@silwar, ¿por qué ha reeditado la aplicación() de nuevo a una confirmación()?sabiendo que la documentación dice que se debe usar apply() a menos que queramos trabajar con el valor de retorno, y ni la pregunta ni la respuesta se ajustan a ese caso –

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

Es importante señalar que, a menos que usted está planeando en hacer algo con el valor de retorno de la llamada commit(), no hay absolutamente ninguna razón para utilizar la confirmación síncrona() llamada en lugar de la asíncrono solicitud() llamada.

Tenga en cuenta que si llama esto desde el hilo principal/IU, la IU se bloquea hasta que se complete el compromiso(). Esto puede llevar más de 100 ms como aposición a aproximadamente 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 acumulará.

Por lo tanto, a menos que usted está planeando en hacer algo como esto, es de esperar en un hilo separado:

editor.remove(String key); 
boolean success = editor.commit(); 
if (!success) { 
    // do something 
} 

en su lugar debe estar haciendo esto:

editor.remove(String key); 
editor.apply(); 
0

información

Simplemente marque sharedpref clase se extiende a Map es por eso que hay remove método

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.remove(String key); 
editor.apply(); 

aquí Editor es el editor de SharedPreferences.

2

Así es como violo este problema.

Primero crea una instancia de SharedPreference como

SharedPreferences mobilePreference; 

Luego utiliza esta sharedPreference como

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

aquí "in.bhartisoftwares.amit.allamitappsthree" es mi nombre de paquete y estoy usando Context.MODE_PRIVATE, porque quiero manipular esta preferencia compartida solo para este nombre de paquete.

entonces estoy suprimiendo la sharedPreference seleccionado (clave de mi sharedPreference se mobileString) de la siguiente manera:

mobilePreference.edit().remove("mobileString").commit(); 

Ver el código como se completa a continuación:

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

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