Jak usunąć parę klucza/wartości z SharedPreferences? Położyłem i usunąłem to z prefsów.Jak usunąć parę klucza/wartości z SharedPreferences?
Odpowiedz
SharedPreferences mySPrefs =PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(String key);
editor.apply();
Tutaj edytorem jest edytor sharedPreferences.
SharedPreferences.Editor.remove(key)
commit();
Ważne jest, aby pamiętać, że jeśli nie planujesz robić coś z wartością powrotnej commit() połączenia, nie ma absolutnie żadnego powodu do stosowania synchroniczna commit() zadzwonić zamiast asynchronicznego aplikuj().
Należy pamiętać, że jeśli wywołujesz to z głównego wątku/interfejsu użytkownika, interfejs użytkownika jest blokowany do momentu zakończenia zatwierdzania(). Może to trwać do około 100 ms w stosunku do około 5 ms dla aplikacji. To może nie wydawać się dużo, ale jeśli jest wykonywane bez przerwy w aplikacji, to na pewno się zsumuje.
Więc, chyba że planujesz robić coś takiego, z nadzieją na osobnym wątku:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Należy zamiast tego robić:
editor.remove(String key);
editor.apply();
Informacja
Po prostu sprawdź, czy klasa sharedpref
została rozszerzona na 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.
Oto jak poradziłem sobie z tym problemem.
Najpierw stworzył instancję SharedPreference jak
SharedPreferences mobilePreference;
następnie użyłem tego sharedPreference jako
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Here "in.bhartisoftwares.amit.allamitappsthree" to moja nazwa pakietu i używam Context.MODE_PRIVATE, ponieważ chcę manipulować tą preferencją tylko dla tej nazwy pakietu.
to jestem usuwanie wybranego sharedPreference (element mojego sharedPreference jest mobileString) w następujący sposób:
mobilePreference.edit().remove("mobileString").commit();
Zobacz kod jako pełny poniżej:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
To 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();
}
- 1. Jak korzystać z SharedPreferences
- 2. SharedPreferences z różnej aktywności
- 3. Jak zbadać SharedPreferences z powłoki adb?
- 4. Najbezpieczniejszy sposób korzystania z SharedPreferences
- 5. uzyskać SharedPreferences od usługi
- 6. onSavedInstanceState vs. SharedPreferences
- 7. SharedPreferences nie zapisuje wartość
- 8. Obliczyć minimalną parę wektorów.
- 9. Szybkość odczytu SharedPreferences
- 10. Xamarin Forms Sharedpreferences krzyż
- 11. SharedPreferences nie jest trwała
- 12. SharedPreferences nie jest aktualizowana
- 13. Zachowanie SharedPreferences na Update/Uninstall
- 14. SharedPreferences czyta stare wartości
- 15. SharedPreferences Wyczyść/zapisz
- 16. Zapisywanie do SharedPreferences z niestandardowego DialogPreference
- 17. Jak usunąć magiczne ciągi z niestandardowych segregatorów?
- 18. Jak wyczyścić SharedPreferences spoza aplikacji na Androida
- 19. SharedPreferences klasa pomocnika
- 20. Ograniczenia Android SharedPreferences?
- 21. Odpowiednik iOS dla urządzeń z Androidem SharedPreferences
- 22. Android SharedPreferences, jak zapisać prostą zmienną int
- 23. Jak zdefiniować dwa pola "unikalne" jako parę
- 24. Android - Jak korzystać z SharedPreferences w klasie non-Activity?
- 25. Jak mogę przechowywać tablicę całkowitą w SharedPreferences?
- 26. Jak zapisać i pobrać datę w SharedPreferences
- 27. Test urządzeń Android: jak wyczyścić SharedPreferences
- 28. Jak mock a SharedPreferences użyciu Mockito
- 29. Jak usunąć fragment z FragmentPagerAdapter?
- 30. Sqlite utworzyć unikalną parę kolumn
Niewielki dodatek do tej odpowiedzi. Z dokumentacji Androida: "Jeśli nie zależy Ci na wartości zwracanej i używasz jej z głównego wątku aplikacji, zastanów się nad użyciem metody apply()". –
@silwar, dlaczego ponownie przypisałeś metodę apply() z powrotem do commit()?wiedząc, że dokumentacja mówi, że należy zastosować apply(), chyba że chcemy pracować z wartością zwracaną, i żadne pytanie ani odpowiedź nie pasują do tego przypadku –