SharedPreferences'dan bazı anahtar / değer çiftleri nasıl kaldırılır? Ben koydum ve bunu tercihlerden kaldırıyorum.
Yanıtlar:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Burada düzenleyici, sharedPreferences düzenleyicisidir.
Commit () çağrısının dönüş değeri ile bir şey yapmayı planlamıyorsanız, zaman uyumsuz apply () çağrısı yerine senkronize commit () çağrısını kullanmak için kesinlikle hiçbir neden olmadığını unutmamak önemlidir.
Bunu ana / UI iş parçacığından çağırıyorsanız, commit () tamamlanana kadar kullanıcı arabiriminin engelleneceğini unutmayın. Bu, uygulama için yaklaşık 5 ms'ye uygulandığında yaklaşık 100 ms kadar sürebilir. Bu çok fazla görünmeyebilir, ancak bir uygulama boyunca sürekli olarak yapılırsa, kesinlikle artacaktır.
Öyleyse, böyle bir şey yapmayı planlamıyorsanız, umarım ayrı bir başlıkta:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Bunun yerine şunu yapmalısın:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
Çok basit:
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();
}
İşte bu sorunu nasıl çözdüğüm.
Önce şu şekilde bir SharedPreference örneği oluşturdum
SharedPreferences mobilePreference;
sonra bu paylaşılan Tercihi kullandım
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Burada "in.bhartisoftwares.amit.allamitappsthree" benim paket adımdır ve Context.MODE_PRIVATE kullanıyorum, çünkü bu paylaşılan tercihi yalnızca bu paket adı için değiştirmek istiyorum.
Ardından, seçili sharedPreference'i (paylaşılan Tercihimin anahtarı mobileString'dir) aşağıdaki gibi siliyorum:
mobilePreference.edit().remove("mobileString").commit();
Aşağıdaki kodun tamamına bakın:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Bilgi
Sadece kontrol sharedpref
sınıfı genişletildi, Map
bu yüzden remove
yöntem var
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Burada düzenleyici, sharedPreferences düzenleyicisidir.