Як видалити пару ключів / значень із SharedPreferences? Я поставив і я, щоб видалити це з преф.
Відповіді:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Тут редактор - це редактор sharedPreferences.
Важливо зазначити, що, якщо ви не плануєте щось робити зі зворотним значенням виклику commit (), немає абсолютно жодної причини для використання синхронного виклику commit () замість асинхронного виклику apply ().
Майте на увазі, що якщо ви викликаєте це з основного потоку / інтерфейсу користувача, інтерфейс блокується до завершення коміту (). Це може зайняти близько 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.