Ayarları Okuma ve Yazma
Kullanıcı tercihlerini kaydedin ve gözlemleyin.
Ayarları Okuma ve Yazma, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Okuma ve Yazma
Anahtarlar tanımlandıktan sonra iki temel işlem, veri akışını okumak ve edit ile yazmaktır. Okumalar reaktiftir, yazmalar askıya alınabilir işlevlerdir.
Veri Flow'u
dataStore.data, bir Flow<Preferences> değeridir. Her yazma işleminizde akış yeni bir Preferences anlık görüntüsü yayımlar; böylece toplayıcılar otomatik olarak güncel kalır.
val rawData: Flow<Preferences> = dataStore.dataTek Bir Değeri Eşleme
Genellikle Preferences nesnesinin tamamını istemezsiniz. Bir anahtarı çekip varsayılan değer uygulamak için map kullanın.
val darkMode: Flow<Boolean> = dataStore.data
.map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }Okuma Hatalarını Ele Alma
Disk okumaları IOException ile başarısız olabilir. Boş tercihleri yayımlamak ve akışın çalışmaya devam etmesini sağlamak için map'ten önce catch kullanın.
val darkMode: Flow<Boolean> = dataStore.data
.catch { e ->
if (e is IOException) emit(emptyPreferences())
else throw e
}
.map { it[PrefKeys.DARK_MODE] ?: false }edit ile Yazma
Değerleri değiştirmek için edit askıya alınabilir işlevini çağırın. Lambda içinde değiştirilebilir bir tercihler nesnesi alırsınız; anahtarları bu nesne üzerinde ayarlayın. Bloğun tamamı tek bir işlemdir.
suspend fun setDarkMode(enabled: Boolean) {
dataStore.edit { prefs ->
prefs[PrefKeys.DARK_MODE] = enabled
}
}edit Bir Askıya Alınabilir İşlevdir
edit askıya alındığı için onu bir eş yordamdan, genellikle viewModelScope.launch kullanarak bir ViewModel içinden çağırmanız gerekir. Bu, yazma işleminin ana iş parçacığı dışında gerçekleşmesini garanti eder.
fun toggleDarkMode(value: Boolean) {
viewModelScope.launch {
repository.setDarkMode(value)
}
}Birden Çok Anahtarı Güncelleme
Tek bir edit bloğu birkaç anahtarı ayarlayabilir. Bunlar atomik olarak birlikte işlenir; böylece gözlemciler hiçbir zaman kısmi bir güncelleme görmez.
dataStore.edit { prefs ->
prefs[PrefKeys.USERNAME] = "ada"
prefs[PrefKeys.DARK_MODE] = true
prefs[PrefKeys.FONT_SIZE] = 16
}Bir Değeri Artırma
edit içinde mevcut değeri okuyup yeni bir değer hesaplayabilirsiniz; bu, başlatma sayıları gibi sayaçlar için kullanışlıdır.
suspend fun incrementLaunchCount() {
dataStore.edit { prefs ->
val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
prefs[PrefKeys.LAUNCH_COUNT] = current + 1
}
}Kaldırma ve Temizleme
Tek bir anahtarı remove ile kaldırabilir veya depoyu clear ile tamamen temizleyebilirsiniz; her ikisini de bir edit bloğu içinde yapın.
dataStore.edit { prefs ->
prefs.remove(PrefKeys.USERNAME)
}
dataStore.edit { prefs ->
prefs.clear()
}Compose'ta Toplama
Bir Composable içinde ViewModel akışını collectAsStateWithLifecycle() ile duruma dönüştürün. Ayar her değiştiğinde kullanıcı arayüzü yeniden oluşturulur.
val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)
Switch(
checked = darkMode,
onCheckedChange = { viewModel.toggleDarkMode(it) }
)Oku-Değiştir-Yaz Döngüsü
Hepsini bir araya getirelim: kullanıcı arayüzü bir akış üzerinden okur, kullanıcı bir seçeneği değiştirir, ViewModel edit işlevini çağıran bir eş yordam başlatır, DataStore yazar, akış yeniden yayın yapar ve kullanıcı arayüzü yeniden oluşturulur. Baştan sona tamamen reaktiftir.
Hızlı Kontrol
Okuma ve yazmayı anlayıp anlamadığınızı test edin.
Özet
Artık ayarları okuyup yazabilirsiniz:
dataStore.data, reaktif birFlow<Preferences>değeridirmaptek bir değeri çıkarır,catchG/Ç hatalarını ele alırdataStore.edit { }, bir eş yordamdan atomik olarak yazma yaparcollectAsStateWithLifecycle, Compose kullanıcı arayüzünü yönlendirir
Sırada Proto DataStore ile türü belirli yapılandırılmış veriler var.
Sıkça Sorulan Sorular
“Ayarları Okuma ve Yazma” dersi ücretsiz mi?
Evet — “Ayarları Okuma ve Yazma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“Ayarları Okuma ve Yazma” dersinde ne öğreneceğim?
Kullanıcı tercihlerini kaydedin ve gözlemleyin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Ayarları Okuma ve Yazma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- DataStore ve SharedPreferences
- Preferences DataStore
- Ayarları Okuma ve Yazma
- Proto DataStore