0Pricing
Android Academy · Ders

Preferences DataStore

Anahtar-değer ayarlarını tepkisel biçimde saklayın.

Preferences DataStore, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 2. 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.

Preferences DataStore

Preferences DataStore, tıpkı SharedPreferences gibi basit anahtar-değer çiftlerini, ancak modern eşzamansız API ile depolar. Tüm nesne üzerinde bir şema veya tür güvenliği zorunlu kılmaz.

Değerlere türü belirli anahtarlar üzerinden erişirsiniz.

DataStore'u Oluşturma

Bir Kotlin dosyasının en üst düzeyinde preferencesDataStore özellik temsilcisini kullanarak her dosya için tek bir DataStore örneği oluşturursunuz. name, diskteki dosya adını belirler.

import androidx.datastore.preferences.preferencesDataStore
import androidx.datastore.preferences.core.Preferences

val Context.dataStore: DataStore<Preferences> by
    preferencesDataStore(name = "settings")

En Üst Düzey Temsilci Neden Kullanılır

Temsilci, işleminizde bu dosya adı için tam olarak bir DataStore örneği olmasını sağlar. Aynı dosya için iki örnek oluşturmak hata verir; çünkü bu örnekler aynı veriler üzerinde çakışır.

Bunu en üst düzey bir Context uzantısı olarak tanımlamak, tekil olmasını sağlar.

Tercih Anahtarları

Her değer için bir türlü anahtar gerekir. Anahtar hem girdiyi adlandırır hem de türünü sabitler. Yardımcı işlevler, desteklenen her tür için anahtar oluşturur.

import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey

val USERNAME = stringPreferencesKey("username")
val DARK_MODE = booleanPreferencesKey("dark_mode")
val LAUNCH_COUNT = intPreferencesKey("launch_count")

Desteklenen Anahtar Türleri

Preferences DataStore şu ilkel anahtar türlerini destekler:

  • stringPreferencesKey
  • booleanPreferencesKey
  • intPreferencesKey, longPreferencesKey, floatPreferencesKey, doublePreferencesKey
  • stringSetPreferencesKey

Anahtarları Tek Bir Yerde Tanımlama

Yaygın bir yaklaşım, tüm anahtarları kolayca bulunup yeniden kullanılabilmeleri için bir object içinde toplamaktır; böylece dize adlarındaki yazım hataları önlenir.

object PrefKeys {
    val USERNAME = stringPreferencesKey("username")
    val DARK_MODE = booleanPreferencesKey("dark_mode")
    val FONT_SIZE = intPreferencesKey("font_size")
}

Dize Anahtarları ve Değişken Adları

dize bağımsız değişkeninin (örneğin "dark_mode") diske yazılan değer olduğunu unutmayın. Daha sonra bu adı değiştirirseniz eski değerlere erişilemez. Kotlin'deki val adı yalnızca kodunuzda kullanılır.

Her Kullanım Alanı İçin Bir DataStore

Farklı kullanım alanları için, her biri kendi dosya adına sahip birden çok DataStore oluşturabilirsiniz; örneğin bir "settings" deposu ve bir "user_session" deposu. İlgili anahtarları birlikte tutun.

val Context.settingsStore by preferencesDataStore(name = "settings")
val Context.sessionStore by preferencesDataStore(name = "session")

Kullanıcı Arayüzü Katmanından Erişme

Temsilci Context üzerinden kullanılabilse de buna Composable'lar içinden doğrudan erişmeyin. DataStore'u bir depoya ekleyin, ardından akışları bir ViewModel'e sunun. Böylece kullanıcı arayüzü test edilebilir durumda kalır.

Basit Bir Depo Yapısı

DataStore'u bir depo sınıfı içinde sarmalamak, temiz bir API ve anahtarlarla eşleme mantığını tanımlayabileceğiniz tek bir yer sağlar.

class SettingsRepository(private val dataStore: DataStore<Preferences>) {
    val darkMode: Flow<Boolean> = dataStore.data
        .map { it[PrefKeys.DARK_MODE] ?: false }
}

Varsayılan Değerler

Bir anahtar henüz mevcut olmayabilir; bu nedenle okumalar null döndürür. Bir tercih değerini eşlerken Elvis işleci ?: ile her zaman bir varsayılan değer sağlayın.

val fontSize: Flow<Int> = dataStore.data
    .map { prefs -> prefs[PrefKeys.FONT_SIZE] ?: 14 }

Hızlı Kontrol

Tercih anahtarlarını anlayıp anlamadığınızı test edin.

Özet

Preferences DataStore'u yapılandırdınız:

  • En üst düzey preferencesDataStore temsilcisiyle bir örnek oluşturun
  • stringPreferencesKey, booleanPreferencesKey ve benzerleriyle türü belirli anahtarlar tanımlayın
  • Anahtarları bir object içinde toplayın ve erişimi bir depo içinde sarmalayın
  • Eksik anahtarlar için her zaman varsayılan değerler sağlayın

Sırada bu ayarları gerçekten okuma ve yazma var.

Sıkça Sorulan Sorular

“Preferences DataStore” dersi ücretsiz mi?

Evet — “Preferences DataStore” 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.

“Preferences DataStore” dersinde ne öğreneceğim?

Anahtar-değer ayarlarını tepkisel biçimde saklayın. 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 2. dersidir.

“Preferences DataStore” 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

  1. DataStore ve SharedPreferences
  2. Preferences DataStore
  3. Ayarları Okuma ve Yazma
  4. Proto DataStore
← Android Academy Sayfasına Dön