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.