Jak usunąć parę klucz / wartość z SharedPreferences? Włożyłem i usunąłem to z prefs.
android
sharedpreferences
Damir
źródło
źródło
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();
źródło
SharedPreferences.Editor.remove(key) commit();
źródło
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(); }
źródło
Oto jak rozwiązałem ten problem.
Najpierw utworzyłem wystąpienie SharedPreference as
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();
źródło
Informacja
Po prostu sprawdź, czy
sharedpref
klasa jest rozszerzonaMap
, dlatego istniejeremove
metodaSharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.remove(String key); editor.apply();
Tutaj edytorem jest edytor SharedPreferences.
źródło