แอพพลิเคชั่นจำนวนมากอาจมีวิธีการบันทึกการตั้งค่าของผู้ใช้ในการตั้งค่าของแอพพลิเคชั่นหรือกิจกรรมเฉพาะ เพื่อรองรับสิ่งนี้ Android มีชุด API ง่ายๆ
ค่ากำหนดมักจะเป็นคู่ค่าของชื่อ สามารถจัดเก็บเป็น“ Shared Preferences” สำหรับกิจกรรมต่างๆในแอปพลิเคชัน (โปรดทราบว่าขณะนี้ไม่สามารถแชร์ข้ามกระบวนการได้) หรืออาจเป็นสิ่งที่ต้องจัดเก็บเฉพาะสำหรับกิจกรรม
การตั้งค่าที่ใช้ร่วมกัน: การกำหนดลักษณะที่ใช้ร่วมกันสามารถใช้โดยส่วนประกอบทั้งหมด (กิจกรรมบริการ ฯลฯ ) จากแอปพลิเคชัน
การตั้งค่าการจัดการกิจกรรม: การตั้งค่าเหล่านี้สามารถใช้ได้กับในกิจกรรมเท่านั้นและไม่สามารถใช้กับส่วนประกอบอื่น ๆ ของแอปพลิเคชันได้
การตั้งค่าที่ใช้ร่วมกัน:
การกำหนดลักษณะที่ใช้ร่วมกันได้รับการจัดการโดยใช้getSharedPreferencesวิธีการของContextคลาส ค่ากำหนดจะถูกเก็บไว้ในไฟล์เริ่มต้น (1) หรือคุณสามารถระบุชื่อไฟล์ (2) เพื่อใช้อ้างอิงการกำหนดลักษณะ
(1) นี่คือวิธีรับอินสแตนซ์เมื่อคุณระบุชื่อไฟล์
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATEเป็นโหมดการทำงานสำหรับค่ากำหนด เป็นโหมดเริ่มต้นและหมายความว่าไฟล์ที่สร้างขึ้นจะเข้าถึงได้โดยเฉพาะแอปพลิเคชันการโทร อีกสองโหมดที่รองรับคือMODE_WORLD_READABLEและMODE_WORLD_WRITEABLE. ในMODE_WORLD_READABLEแอปพลิเคชันอื่นสามารถอ่านไฟล์ที่สร้างขึ้น แต่ไม่สามารถแก้ไขได้ ในกรณีของMODE_WORLD_WRITEABLEแอปพลิเคชันอื่น ๆ ยังมีสิทธิ์ในการเขียนสำหรับไฟล์ที่สร้างขึ้น
(2) วิธีที่แนะนำคือการใช้โหมดเริ่มต้นโดยไม่ต้องระบุชื่อไฟล์
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
สุดท้ายเมื่อคุณมีอินสแตนซ์ค่ากำหนดแล้วนี่คือวิธีที่คุณสามารถดึงค่าที่เก็บไว้จากค่ากำหนด:
int storedPreference = preferences.getInt("storedInt", 0);
ในการจัดเก็บค่าในSharedPreference.Editorอ็อบเจ็กต์ไฟล์การกำหนดค่าตามความชอบจะต้องถูกใช้ Editorเป็นอินเทอร์เฟซที่ซ้อนกันของSharedPreferenceคลาส
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor ยังสนับสนุนวิธีการเช่นremove()และclear()เพื่อลบค่าการกำหนดลักษณะออกจากไฟล์
การตั้งค่ากิจกรรม:
การกำหนดลักษณะที่ใช้ร่วมกันสามารถใช้โดยส่วนประกอบของแอปพลิเคชันอื่น ๆ แต่ถ้าคุณไม่จำเป็นต้องแบ่งปันการตั้งค่ากับส่วนประกอบอื่น ๆ และต้องการมีกิจกรรมส่วนตัว คุณสามารถทำได้ด้วยความช่วยเหลือของgetPreferences()วิธีการของกิจกรรม getPreferenceวิธีการใช้getSharedPreferences()วิธีการที่มีชื่อของระดับกิจกรรมสำหรับชื่อไฟล์การตั้งค่าที่
ต่อไปนี้เป็นรหัสสำหรับรับค่ากำหนด
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
รหัสในการจัดเก็บค่าจะเหมือนกับในกรณีของการกำหนดลักษณะร่วมกัน
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
คุณยังสามารถใช้วิธีการอื่น ๆ เช่นการจัดเก็บสถานะกิจกรรมในฐานข้อมูล หมายเหตุ Android android.preferenceนอกจากนี้ยังมีแพคเกจที่เรียกว่า แพ็คเกจกำหนดคลาสเพื่อใช้งาน UI การกำหนดลักษณะแอปพลิเคชัน
หากต้องการดูตัวอย่างเพิ่มเติมให้ตรวจสอบโพสต์การจัดเก็บข้อมูลของ Android บนไซต์นักพัฒนา