Sobes.tech
Junior — Middle

Môžete vysvetliť, ako je implementované ukladanie a správa údajov v DataStore?

sobes.tech AI

Odpoveď od AI

DataStore v Android je moderný spôsob ukladania údajov, ktorý nahrádza SharedPreferences. Je založený na Kotlin Coroutines a Flow, čo zabezpečuje asynchrónne a reaktívne spravovanie údajov.

Ukladanie údajov je realizované prostredníctvom dvoch hlavných typov DataStore:

  • Preferences DataStore — ukladá páry kľúč-hodnota, podobne ako SharedPreferences, ale s podporou tokov a bez blokovania.
  • Proto DataStore — ukladá údaje vo forme serializovaných protobuf objektov, čo umožňuje pracovať s prísne typizovanými štruktúrami.

Údaje sú uložené v súbore na disku a prístup k nim je cez Flow, čo umožňuje odber zmien a prijímanie aktualizácií v reálnom čase.

Príklad použitia Preferences DataStore:

val Context.dataStore by preferencesDataStore(name = "settings")

val EXAMPLE_KEY = stringPreferencesKey("example_key")

// Zápis údajov
suspend fun saveExample(value: String) {
    context.dataStore.edit { preferences ->
        preferences[EXAMPLE_KEY] = value
    }
}

// Čítanie údajov
val exampleFlow: Flow<String?> = context.dataStore.data
    .map { preferences ->
        preferences[EXAMPLE_KEY]
    }

Týmto spôsobom DataStore zabezpečuje bezpečné, asynchrónne a reaktívne ukladanie údajov s pohodlným API.