Làm cách nào để xóa một số cặp khóa / giá trị khỏi SharedPreferences? Tôi đã đặt và tôi xóa nó khỏi prefs.
Câu trả lời:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Đây là trình chỉnh sửa sharedPreferences.
Điều quan trọng cần lưu ý là, trừ khi bạn đang lên kế hoạch thực hiện điều gì đó với giá trị trả về của lệnh gọi commit (), hoàn toàn không có lý do gì để sử dụng lệnh gọi commit () đồng bộ thay vì lệnh gọi apply () không đồng bộ.
Hãy nhớ rằng nếu bạn đang gọi điều này từ chuỗi chính / giao diện người dùng, giao diện người dùng sẽ bị chặn cho đến khi hoàn thành commit (). Quá trình này có thể mất khoảng 100ms so với khoảng 5ms đối với ứng dụng. Điều đó có vẻ không nhiều, nhưng nếu được thực hiện liên tục trong suốt một ứng dụng, nó chắc chắn sẽ tăng lên.
Vì vậy, trừ khi bạn đang lên kế hoạch làm điều gì đó như thế này, hãy hy vọng vào một chuỗi riêng:
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
Thay vào đó, bạn nên làm điều này:
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
Nó rất đơn giản:
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();
}
Đây là cách tôi giải quyết vấn đề này.
Đầu tiên, tôi đã tạo một phiên bản của SharedPreference với tư cách là
SharedPreferences mobilePreference;
thì tôi đã sử dụng sharedPreference này với tư cách là
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
Ở đây "in.bhartisoftwares.amit.allamitappsthree" là tên gói của tôi và tôi đang sử dụng Context.MODE_PRIVATE, vì tôi chỉ muốn thao tác tùy chọn chia sẻ này cho tên gói này.
Sau đó, tôi xóa sharedPreference đã chọn (khóa sharedPreference của tôi là mobileString) như sau:
mobilePreference.edit().remove("mobileString").commit();
Xem mã đầy đủ dưới đây:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
Thông tin
Chỉ cần kiểm tra sharedpref
lớp được mở rộng Map
, đó là lý do tại sao có remove
phương thức
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
Đây là trình chỉnh sửa sharedPreferences.