Membaca dan Menulis Pengaturan
Simpan dan amati preferensi pengguna.
Membaca dan Menulis Pengaturan adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.
Membaca dan Menulis
Setelah kunci ditentukan, dua operasi utama adalah membaca aliran data dan menulis dengan edit. Pembacaan bersifat reaktif, sedangkan penulisan merupakan fungsi suspend.
Flow Data
dataStore.data adalah Flow<Preferences>. Setiap kali Anda menulis, aliran data memancarkan snapshot Preferences baru, sehingga pengumpul data selalu diperbarui secara otomatis.
val rawData: Flow<Preferences> = dataStore.dataMemetakan Satu Nilai
Anda jarang memerlukan seluruh objek Preferences. Gunakan map untuk mengambil satu kunci dan menerapkan nilai bawaan.
val darkMode: Flow<Boolean> = dataStore.data
.map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }Menangani Kesalahan Pembacaan
Pembacaan disk dapat gagal dengan IOException. Gunakan catch sebelum map untuk memancarkan preferensi kosong dan menjaga aliran data tetap berjalan.
val darkMode: Flow<Boolean> = dataStore.data
.catch { e ->
if (e is IOException) emit(emptyPreferences())
else throw e
}
.map { it[PrefKeys.DARK_MODE] ?: false }Menulis dengan edit
Untuk mengubah nilai, panggil fungsi suspend edit. Di dalam lambda, Anda menerima objek preferensi yang dapat diubah; tetapkan kunci pada objek tersebut. Seluruh blok merupakan satu transaksi.
suspend fun setDarkMode(enabled: Boolean) {
dataStore.edit { prefs ->
prefs[PrefKeys.DARK_MODE] = enabled
}
}edit Merupakan Fungsi Suspend
Karena edit bersifat suspend, Anda harus memanggilnya dari coroutine, biasanya di dalam ViewModel menggunakan viewModelScope.launch. Dengan demikian, penulisan berlangsung di luar thread utama.
fun toggleDarkMode(value: Boolean) {
viewModelScope.launch {
repository.setDarkMode(value)
}
}Memperbarui Beberapa Kunci
Satu blok edit dapat menetapkan beberapa kunci. Semua kunci diterapkan secara atomik, sehingga pengamat tidak pernah melihat pembaruan yang sebagian.
dataStore.edit { prefs ->
prefs[PrefKeys.USERNAME] = "ada"
prefs[PrefKeys.DARK_MODE] = true
prefs[PrefKeys.FONT_SIZE] = 16
}Menambah Nilai
Di dalam edit, Anda dapat membaca nilai saat ini dan menghitung nilai baru. Hal ini berguna untuk penghitung, seperti jumlah peluncuran.
suspend fun incrementLaunchCount() {
dataStore.edit { prefs ->
val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
prefs[PrefKeys.LAUNCH_COUNT] = current + 1
}
}Menghapus dan Mengosongkan
Hapus satu kunci dengan remove, atau hapus seluruh isi penyimpanan dengan clear; keduanya dilakukan di dalam blok edit.
dataStore.edit { prefs ->
prefs.remove(PrefKeys.USERNAME)
}
dataStore.edit { prefs ->
prefs.clear()
}Mengumpulkan Data di Compose
Di dalam Composable, ubah aliran data ViewModel menjadi status dengan collectAsStateWithLifecycle(). Antarmuka pengguna akan disusun ulang setiap kali pengaturan berubah.
val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)
Switch(
checked = darkMode,
onCheckedChange = { viewModel.toggleDarkMode(it) }
)Siklus Baca-Ubah-Tulis
Jika digabungkan: antarmuka pengguna membaca melalui aliran data, pengguna mengubah pilihan, ViewModel meluncurkan coroutine yang memanggil edit, DataStore menulis data, aliran data memancarkannya kembali, lalu antarmuka pengguna disusun ulang. Semuanya reaktif dari awal hingga akhir.
Pemeriksaan Singkat
Uji pemahaman Anda tentang membaca dan menulis.
Rangkuman
Sekarang Anda dapat membaca dan menulis pengaturan:
dataStore.dataadalahFlow<Preferences>reaktifmapmengambil satu nilai, sedangkancatchmenangani kesalahan I/OdataStore.edit { }menulis secara atomik dari coroutinecollectAsStateWithLifecyclemenggerakkan antarmuka Compose
Selanjutnya: data terstruktur bertipe dengan Proto DataStore.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membaca dan Menulis Pengaturan” gratis?
Ya — teks lengkap “Membaca dan Menulis Pengaturan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membaca dan Menulis Pengaturan”?
Simpan dan amati preferensi pengguna. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Membaca dan Menulis Pengaturan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- DataStore vs SharedPreferences
- Preferences DataStore
- Membaca dan Menulis Pengaturan
- Proto DataStore