0Pricing
Android Academy · Ders

Proto DataStore

Türü belirlenmiş yapılandırılmış verileri saklayın.

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

Proto DataStore

Proto DataStore, gelişigüzel anahtar-değer çiftleri yerine türü güçlü yapılandırılmış nesneleri depolar. Bir şema tanımlarsınız ve DataStore her dosya için tek bir türü belirli nesne depolar.

Ayarlarınız tutarlı bir model oluşturduğunda idealdir.

Türü Belirli Veriler Neden Kullanılır

Preferences DataStore türsüzdür: bir anahtardaki yazım hatası veya yanlış türü okuma yalnızca çalışma zamanında başarısız olur. Proto DataStore, ayar nesnesinin tamamı için derleme zamanı tür güvenliği sağlar.

  • Yanlış yazılabilecek dize anahtarları yoktur
  • Varsayılan değerler şemada tanımlıdır
  • Alanlar yeniden düzenlemeye uygundur

Serileştirici Biçimi Seçme

Klasik yaklaşım, şemayı tanımlamak için Protocol Buffers (proto) kullanır. Ayrıca kotlinx.serialization veya özel bir biçimle de serileştirme yapabilirsiniz. Şema, alanları ve türleri açıklar.

Proto Şeması Tanımlama

Ayarlar mesajınızı açıklayan bir .proto dosyası yazarsınız. Protobuf derleyicisi bu dosyadan bir Kotlin/Java sınıfı oluşturur.

syntax = "proto3";

option java_package = "com.example.app";
option java_multiple_files = true;

message UserSettings {
  bool dark_mode = 1;
  int32 font_size = 2;
  string username = 3;
}

Serileştirici Uygulama

DataStore, türünüzü bir akıştan nasıl okuyup yazacağını bilen bir Serializer'a ve dosya boş olduğunda kullanılacak bir defaultValue değerine ihtiyaç duyar.

object UserSettingsSerializer : Serializer<UserSettings> {
    override val defaultValue: UserSettings = UserSettings.getDefaultInstance()

    override suspend fun readFrom(input: InputStream): UserSettings =
        UserSettings.parseFrom(input)

    override suspend fun writeTo(t: UserSettings, output: OutputStream) =
        t.writeTo(output)
}

Proto DataStore Oluşturma

Dosya adını ve serileştiricinizi geçirerek dataStore temsilcisini kullanın (preferencesDataStore değil).

val Context.settingsStore: DataStore<UserSettings> by dataStore(
    fileName = "user_settings.pb",
    serializer = UserSettingsSerializer
)

Türü Belirli Verileri Okuma

Okumalar settingsStore.data üzerinden gelir; ancak artık akışın türü modelinizdir. Anahtar veya tür dönüştürme yoktur; alanlara doğrudan erişmeniz yeterlidir.

val darkMode: Flow<Boolean> = context.settingsStore.data
    .map { settings -> settings.darkMode }

updateData ile Yazma

Proto DataStore, edit yerine updateData askıya alınabilir işlevini kullanır. Mevcut nesneyi alır ve yeni bir nesne döndürürsünüz. Protobuf ile oluşturulan oluşturucuyu kullanırsınız.

suspend fun setDarkMode(enabled: Boolean) {
    context.settingsStore.updateData { current ->
        current.toBuilder()
            .setDarkMode(enabled)
            .build()
    }
}

Değişmez Güncellemeler

Mevcut nesneyi hiçbir zaman değiştirmediğinize dikkat edin; yeni bir nesne oluşturup döndürürsünüz. Güncellemeleri işlemsel ve tüm gözlemciler arasında tutarlı yapan, bu değişmezliktir.

Bozulmayı Ele Alma

Depolanan dosya okunamaz hâle gelirse DataStore bir CorruptionException fırlatır. Uygulamanın çökmesi yerine güvenli bir varsayılan döndüren bir corruptionHandler sağlayabilirsiniz.

val Context.settingsStore by dataStore(
    fileName = "user_settings.pb",
    serializer = UserSettingsSerializer,
    corruptionHandler = ReplaceFileCorruptionHandler {
        UserSettings.getDefaultInstance()
    }
)

Preferences ve Proto Karşılaştırması

İhtiyaçlarınıza göre seçim yapın:

  • Preferences: birkaç ilgisiz işaret, hızlı kurulum, şema yok
  • Proto: yapılandırılmış bir ayar modeli, tür güvenliği, tanımlı varsayılanlar

Her ikisi de aynı eşzamansız, işlemsel ve Flow tabanlı temeli paylaşır.

Hızlı Kontrol

Proto DataStore'u anlayıp anlamadığınızı test edin.

Özet

Proto DataStore ile türü belirli verileri depolamayı öğrendiniz:

  • Genellikle Protocol Buffers ile bir şema tanımlayın
  • defaultValue içeren bir Serializer uygulayın
  • Depoyu dataStore temsilcisiyle oluşturun
  • Alanları doğrudan okuyun; updateData ile yazın
  • Varsayılan döndüren bir işleyiciyle bozulmayı ele alın

DataStore kursunu tamamladınız.

Sıkça Sorulan Sorular

“Proto DataStore” dersi ücretsiz mi?

Evet — “Proto 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.

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

Türü belirlenmiş yapılandırılmış verileri 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 4. dersidir.

“Proto 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