ใช้ค่าค่ากำหนดที่บันทึกไว้ เป็นส่วนหนึ่งของ 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 ค่า อินเทอร์เฟซ: