จะลบคู่คีย์ / ค่าบางคู่ออกจาก SharedPreferences ได้อย่างไร ฉันใส่และลบออกจากคำนำหน้า
จะลบคู่คีย์ / ค่าบางคู่ออกจาก SharedPreferences ได้อย่างไร ฉันใส่และลบออกจากคำนำหน้า
คำตอบ:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
นี่คือตัวแก้ไข sharedPreferences
สิ่งสำคัญคือต้องทราบว่าเว้นแต่คุณจะวางแผนที่จะทำบางสิ่งบางอย่างด้วยค่าส่งคืนของการเรียกคอมมิต () ไม่มีเหตุผลอย่างแน่นอนในการใช้การเรียกแบบซิงโครนัสคอมมิต () แทนการเรียกใช้แบบอะซิงโครนัส ()
โปรดทราบว่าหากคุณเรียกสิ่งนี้จากเธรดหลัก / UI UI จะถูกบล็อกจนกว่าการกระทำ () จะเสร็จสิ้น การดำเนินการนี้อาจใช้เวลาประมาณ 100ms ขึ้นไปเมื่อใช้กับประมาณ 5ms สำหรับการสมัคร อาจดูเหมือนไม่มาก แต่ถ้าทำอย่างต่อเนื่องตลอดทั้งแอปพลิเคชันก็จะเพิ่มขึ้นอย่างแน่นอน
ดังนั้นหากคุณไม่ได้วางแผนที่จะทำสิ่งนี้หวังว่าจะแยกเธรด:
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