0Pricing
Android Academy · บทเรียน

การอ่านและเขียนการตั้งค่า

บันทึกและสังเกตการตั้งค่าของผู้ใช้

การอ่านและเขียนการตั้งค่า เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

การอ่านและการเขียน

เมื่อกำหนดคีย์แล้ว การดำเนินการหลักมีสองอย่าง ได้แก่การอ่านกระแสข้อมูล และการเขียนด้วย edit การอ่านตอบสนองต่อการเปลี่ยนแปลง ส่วนการเขียนเป็นฟังก์ชันระงับการทำงาน

Flow ของข้อมูล

dataStore.data เป็น Flow<Preferences> ทุกครั้งที่คุณเขียนข้อมูล กระแสข้อมูลจะส่งสแนปชอต Preferences ใหม่ ทำให้ผู้รวบรวมข้อมูลเป็นข้อมูลล่าสุดโดยอัตโนมัติ

val rawData: Flow<Preferences> = dataStore.data

การแมปค่าเดียว

โดยทั่วไปคุณไม่ต้องการอ็อบเจ็กต์ Preferences ทั้งหมด ให้ใช้ map เพื่อดึงคีย์หนึ่งค่าออกมาและกำหนดค่าเริ่มต้น

val darkMode: Flow<Boolean> = dataStore.data
    .map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }

การจัดการข้อผิดพลาดขณะอ่าน

การอ่านจากดิสก์อาจล้มเหลวด้วย IOException ให้ใช้ catch ก่อน map เพื่อส่ง Preferences ว่างและทำให้กระแสข้อมูลทำงานต่อไป

val darkMode: Flow<Boolean> = dataStore.data
    .catch { e ->
        if (e is IOException) emit(emptyPreferences())
        else throw e
    }
    .map { it[PrefKeys.DARK_MODE] ?: false }

การเขียนด้วย edit

หากต้องการเปลี่ยนค่า ให้เรียกฟังก์ชันระงับการทำงาน edit ภายในแลมบ์ดา คุณจะได้รับอ็อบเจ็กต์การตั้งค่าที่แก้ไขได้ แล้วกำหนดคีย์ลงในอ็อบเจ็กต์นั้น บล็อกทั้งหมดจะเป็นธุรกรรมเดียว

suspend fun setDarkMode(enabled: Boolean) {
    dataStore.edit { prefs ->
        prefs[PrefKeys.DARK_MODE] = enabled
    }
}

edit เป็นฟังก์ชันระงับการทำงาน

เนื่องจาก edit เป็นฟังก์ชันระงับการทำงาน คุณจึงต้องเรียกจากโครูทีน โดยทั่วไปจะเรียกภายใน ViewModel ด้วย viewModelScope.launch วิธีนี้รับรองว่าการเขียนจะเกิดขึ้นนอกเธรดหลัก

fun toggleDarkMode(value: Boolean) {
    viewModelScope.launch {
        repository.setDarkMode(value)
    }
}

การอัปเดตหลายคีย์

บล็อก edit หนึ่งบล็อกสามารถกำหนดค่าหลายคีย์ได้ ค่าทั้งหมดจะถูกยืนยันพร้อมกันแบบอะตอมิก ดังนั้นผู้สังเกตการณ์จะไม่เห็นการอัปเดตที่ไม่สมบูรณ์

dataStore.edit { prefs ->
    prefs[PrefKeys.USERNAME] = "ada"
    prefs[PrefKeys.DARK_MODE] = true
    prefs[PrefKeys.FONT_SIZE] = 16
}

การเพิ่มค่าทีละหนึ่ง

ภายใน edit คุณสามารถอ่านค่าปัจจุบันและคำนวณค่าใหม่ได้ ซึ่งเหมาะสำหรับตัวนับ เช่น จำนวนครั้งที่เปิดแอป

suspend fun incrementLaunchCount() {
    dataStore.edit { prefs ->
        val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
        prefs[PrefKeys.LAUNCH_COUNT] = current + 1
    }
}

การนำออกและการล้างข้อมูล

นำคีย์เดียวออกด้วย remove หรือล้างข้อมูลในที่เก็บทั้งหมดด้วย clear โดยทำทั้งสองอย่างภายในบล็อก edit

dataStore.edit { prefs ->
    prefs.remove(PrefKeys.USERNAME)
}

dataStore.edit { prefs ->
    prefs.clear()
}

การรวบรวมข้อมูลใน Compose

ใน Composable ให้แปลงโฟลว์จาก ViewModel เป็นสถานะด้วย collectAsStateWithLifecycle() ส่วนติดต่อผู้ใช้จะประกอบใหม่ทุกครั้งที่การตั้งค่าเปลี่ยนแปลง

val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)

Switch(
    checked = darkMode,
    onCheckedChange = { viewModel.toggleDarkMode(it) }
)

วงจรอ่าน-แก้ไข-เขียน

เมื่อนำทุกอย่างมารวมกัน: ส่วนติดต่อผู้ใช้อ่านข้อมูลผ่านโฟลว์ ผู้ใช้สลับค่า ViewModel เปิดโครูทีนที่เรียก edit DataStore เขียนข้อมูล โฟลว์ส่งข้อมูลใหม่ และส่วนติดต่อผู้ใช้ประกอบใหม่ ทั้งหมดตอบสนองต่อการเปลี่ยนแปลงตั้งแต่ต้นจนจบ

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการอ่านและการเขียน

สรุปทบทวน

ตอนนี้คุณสามารถอ่านและเขียนการตั้งค่าได้แล้ว:

  • dataStore.data เป็น Flow<Preferences> ที่ตอบสนองต่อการเปลี่ยนแปลง
  • map ดึงค่าหนึ่งค่าออกมา ส่วน catch จัดการข้อผิดพลาดด้านการรับส่งข้อมูล
  • dataStore.edit { } เขียนข้อมูลแบบอะตอมิกจากโครูทีน
  • collectAsStateWithLifecycle ขับเคลื่อนส่วนติดต่อผู้ใช้ของ Compose

ถัดไป: ข้อมูลแบบมีโครงสร้างและระบุชนิดด้วย Proto DataStore

คำถามที่พบบ่อย

บทเรียน “การอ่านและเขียนการตั้งค่า” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การอ่านและเขียนการตั้งค่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านและเขียนการตั้งค่า”

บันทึกและสังเกตการตั้งค่าของผู้ใช้ คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การอ่านและเขียนการตั้งค่า” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม

ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. DataStore เทียบกับ SharedPreferences
  2. Preferences DataStore
  3. การอ่านและเขียนการตั้งค่า
  4. Proto DataStore
← กลับไปที่ Android Academy