ใช้ค่าค่ากำหนดที่บันทึกไว้ เป็นส่วนหนึ่งของ Android Jetpack
เอกสารนี้อธิบายวิธีจัดเก็บและใช้งาน
ค่า Preference
ที่ได้รับการบันทึกโดย
ไลบรารีค่ากำหนด
พื้นที่เก็บข้อมูลค่ากำหนด
ส่วนนี้จะอธิบายวิธีที่ Preference
คงข้อมูลไว้ได้
ค่ากำหนดที่แชร์
โดยค่าเริ่มต้น Preference
จะใช้
SharedPreferences
เพื่อบันทึก
SharedPreferences
API รองรับการอ่านและการเขียนแบบง่าย
คู่คีย์-ค่าจากไฟล์ที่บันทึกในเซสชันของแอปพลิเคชัน
ไลบรารีค่ากำหนดใช้อินสแตนซ์ SharedPreferences
ส่วนตัวเพื่อให้มีเพียงอินสแตนซ์
แอปพลิเคชันสามารถเข้าถึงได้
ลองดูตัวอย่างต่อไปนี้
SwitchPreferenceCompat
:
<SwitchPreferenceCompat app:key="notifications" app:title="Enable message notifications"/>
เมื่อผู้ใช้สลับสวิตช์นี้เป็น "เปิด" สถานะ ไฟล์ SharedPreferences
อัปเดตด้วยคู่คีย์-ค่า "notifications" : "true"
คีย์ที่ใช้คือ
เหมือนกับชุดคีย์สำหรับ Preference
ดูข้อมูลเพิ่มเติมเกี่ยวกับ SharedPreferences
API ได้ที่บันทึกคีย์-ค่า
สำหรับข้อมูลเกี่ยวกับวิธีต่างๆ ในการจัดเก็บข้อมูลบน Android โปรดดูที่ข้อมูล และภาพรวมพื้นที่เก็บข้อมูลไฟล์
PreferenceDataStore
แม้ว่าไลบรารีค่ากำหนดจะยังคงอยู่ที่ข้อมูล SharedPreferences
โดย
ค่าเริ่มต้น SharedPreferences
ไม่ใช่โซลูชันที่สมบูรณ์แบบเสมอไป ตัวอย่างเช่น หาก
แอปพลิเคชันของคุณกำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ คุณอาจต้องการคง
การตั้งค่าแอปพลิเคชันในระบบคลาวด์เพื่อให้การตั้งค่ามีผลทั่วทั้ง
อุปกรณ์และแพลตฟอร์มอื่นๆ ในทำนองเดียวกัน หากแอปพลิเคชันของคุณมีการกำหนดค่า
ที่เฉพาะอุปกรณ์ ผู้ใช้แต่ละรายบนอุปกรณ์มีการตั้งค่าแยกจากกัน
ทำให้ SharedPreferences
เป็นโซลูชันที่ไม่ค่อยดีที่สุด
PreferenceDataStore
ช่วยให้คุณใช้แบ็กเอนด์พื้นที่เก็บข้อมูลที่กำหนดเองเพื่อคงค่า Preference
ไว้ได้ สำหรับข้อมูลเพิ่มเติม
ดูข้อมูลที่หัวข้อใช้พื้นที่เก็บข้อมูลที่กำหนดเอง
อ่านค่าค่ากำหนด
หากต้องการเรียกออบเจ็กต์ SharedPreferences
ที่ใช้อยู่ ให้เรียก
PreferenceManager.getDefaultSharedPreferences()
แม้ว่าวิธีการนี้จะใช้งานได้จากทุกที่ในแอปพลิเคชันของคุณ เราขอแนะนำให้คุณ
แยกแอปออกเป็นเลเยอร์ต่างๆ สำหรับข้อมูลเพิ่มเติม โปรดดู ข้อมูล
เลเยอร์
ตัวอย่างเช่น ระบุ EditTextPreference
ที่มีคีย์ "signature"
ในรูปแบบ
ดังต่อไปนี้:
<EditTextPreference app:key="signature" app:title="Your signature"/>
คุณดึงค่าที่บันทึกไว้สำหรับ Preference
นี้ทั่วโลกได้ดังนี้
Kotlin
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this /* Activity context */) val name = sharedPreferences.getString("signature", "")
Java
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this /* Activity context */); String name = sharedPreferences.getString("signature", "");
ฟังการเปลี่ยนแปลงค่าค่ากำหนด
หากต้องการฟังการเปลี่ยนแปลงของค่า Preference
คุณสามารถเลือกระหว่าง 2 ค่า
อินเทอร์เฟซ: