การอ่านและเขียนการตั้งค่า
บันทึกและสังเกตการตั้งค่าของผู้ใช้
การอ่านและเขียนการตั้งค่า เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- DataStore เทียบกับ SharedPreferences
- Preferences DataStore
- การอ่านและเขียนการตั้งค่า
- Proto DataStore