Bagaimana cara menghapus beberapa pasangan kunci / nilai dari SharedPreferences? Saya telah menempatkan dan saya untuk menghapusnya dari prefs.
Jawaban:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Di sini editor adalah editor sharedPreferences.
Penting untuk diperhatikan bahwa, kecuali Anda berencana melakukan sesuatu dengan nilai kembalian dari panggilan commit (), sama sekali tidak ada alasan untuk menggunakan panggilan sinkronus () daripada panggilan apply () asinkron.
Perlu diingat bahwa jika Anda memanggil ini dari utas utama / UI, UI diblokir hingga commit () selesai. Ini bisa memakan waktu hingga sekitar 100 md seperti yang diterapkan ke sekitar 5 md untuk pengajuan. Itu mungkin tidak terlihat banyak, tetapi jika dilakukan terus menerus di seluruh aplikasi, itu pasti akan bertambah.
Jadi, kecuali Anda berencana melakukan sesuatu seperti ini, semoga di utas terpisah:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Anda seharusnya melakukan ini:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
Sangat sederhana:
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();
}
Inilah cara saya mengatasi masalah ini.
Pertama saya membuat sebuah instance dari SharedPreference sebagai
SharedPreferences mobilePreference;
lalu saya menggunakan sharedPreference ini sebagai
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Di sini "in.bhartisoftwares.amit.allamitappsthree" adalah nama paket saya dan saya menggunakan Context.MODE_PRIVATE, karena saya ingin memanipulasi preferensi bersama ini hanya untuk nama paket ini.
Kemudian saya menghapus sharedPreference yang dipilih (kunci sharedPreference saya adalah mobileString) sebagai berikut:
mobilePreference.edit().remove("mobileString").commit();
Lihat kode lengkapnya di bawah ini:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Informasi
Cukup periksa sharedpref
kelas diperpanjang untuk Map
itu mengapa ada remove
metode
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Di sini editor adalah editor sharedPreferences.