Sobes.tech
Junior — Middle

Můžete vysvětlit, jak je implementováno ukládání a správa dat v DataStore?

sobes.tech AI

Odpověď od AI

DataStore v Androidu je moderní způsob ukládání dat, který nahrazuje SharedPreferences. Je založen na Kotlin Coroutines a Flow, což zajišťuje asynchronní a reaktivní správu dat.

Ukládání dat je realizováno prostřednictvím dvou hlavních typů DataStore:

  • Preferences DataStore — ukládá páry klíč-hodnota, podobně jako SharedPreferences, ale s podporou toků a bez blokování.
  • Proto DataStore — ukládá data ve formě serializovaných protobuf objektů, což umožňuje pracovat s přísně typovanými strukturami.

Data jsou uložena v souboru na disku a přístup k nim je přes Flow, což umožňuje odebírat změny a přijímat aktualizace v reálném čase.

Příklad použití Preferences DataStore:

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

val EXAMPLE_KEY = stringPreferencesKey("example_key")

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

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

Tímto způsobem DataStore poskytuje bezpečné, asynchronní a reaktivní ukládání dat s pohodlným API.