Jak usunąć parę klucz / wartość z SharedPreferences? Włożyłem i usunąłem to z prefs.
Odpowiedzi:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Tutaj edytorem jest edytor SharedPreferences.
Należy zauważyć, że o ile nie planujesz zrobić czegoś z wartością zwracaną przez wywołanie commit (), nie ma absolutnie żadnego powodu, aby używać synchronicznego wywołania commit () zamiast asynchronicznego wywołania apply ().
Pamiętaj, że jeśli wywołujesz to z głównego wątku / UI, interfejs użytkownika jest blokowany do czasu zakończenia commit (). Może to zająć około 100 ms, w porównaniu do około 5 ms. Może się wydawać, że to niewiele, ale jeśli będzie się to odbywać nieustannie w całej aplikacji, z pewnością będzie się sumować.
Tak więc, jeśli nie planujesz zrobić czegoś takiego, miejmy nadzieję, że w osobnym wątku:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Zamiast tego powinieneś to zrobić:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
To jest bardzo proste:
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();
}
Oto jak rozwiązałem ten problem.
Najpierw utworzyłem wystąpienie SharedPreference as
SharedPreferences mobilePreference;
następnie użyłem tego sharedPreference jako
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Tutaj „in.bhartisoftwares.amit.allamitappsthree” to nazwa mojego pakietu i używam Context.MODE_PRIVATE, ponieważ chcę manipulować tą wspólną preferencją tylko dla tej nazwy pakietu.
Następnie usuwam wybrane sharedPreference (klucz do moich sharedPreference to mobileString) w następujący sposób:
mobilePreference.edit().remove("mobileString").commit();
Zobacz pełny kod poniżej:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Informacja
Po prostu sprawdź, czy sharedpref
klasa jest rozszerzona Map
, dlatego istnieje remove
metoda
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Tutaj edytorem jest edytor SharedPreferences.