Как удалить пару ключ / значение из SharedPreferences? Я поставил и убрал это из prefs.
Ответы:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Здесь редактор - это редактор sharedPreferences.
Важно отметить, что, если вы не планируете что-то делать с возвращаемым значением вызова commit (), нет абсолютно никаких причин для использования синхронного вызова commit () вместо асинхронного вызова apply ().
Имейте в виду, что если вы вызываете это из основного потока / потока пользовательского интерфейса, пользовательский интерфейс блокируется до завершения commit (). Это может занять около 100 мс, а не около 5 мс для подачи заявки. Может показаться, что это не так уж много, но если делать это постоянно на протяжении всего приложения, это обязательно прибавится.
Итак, если вы не планируете делать что-то подобное, надеюсь, в отдельном потоке:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Вместо этого вы должны сделать это:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
Все очень просто:
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();
}
Вот как я решил эту проблему.
Сначала я создал экземпляр SharedPreference как
SharedPreferences mobilePreference;
то я использовал это sharedPreference как
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Здесь «in.bhartisoftwares.amit.allamitappsthree» - это имя моего пакета, и я использую Context.MODE_PRIVATE, потому что я хочу управлять этим общим предпочтением только для этого имени пакета.
Затем я удаляю выбранный sharedPreference (ключ моего sharedPreference - mobileString) следующим образом:
mobilePreference.edit().remove("mobileString").commit();
См. Полный код ниже:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Информация
Просто проверьте sharedpref
класс расширен Map
, поэтому есть remove
метод
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Здесь редактор - это редактор sharedPreferences.