Junior — Middle
Can you explain how data storage and management are implemented in DataStore?
sobes.tech AI
Answer from AI
DataStore in Android is a modern data storage solution that replaces SharedPreferences. It is based on Kotlin Coroutines and Flow, providing asynchronous and reactive data management.
Data is stored through two main types of DataStore:
- Preferences DataStore — stores key-value pairs, similar to SharedPreferences, but with support for streams and without blocking.
- Proto DataStore — stores data as serialized protobuf objects, allowing working with strictly typed structures.
Data is saved in a file on disk, and access is through Flow, enabling subscription to changes and receiving real-time updates.
Example of using Preferences DataStore:
val Context.dataStore by preferencesDataStore(name = "settings")
val EXAMPLE_KEY = stringPreferencesKey("example_key")
// Writing data
suspend fun saveExample(value: String) {
context.dataStore.edit { preferences ->
preferences[EXAMPLE_KEY] = value
}
}
// Reading data
val exampleFlow: Flow<String?> = context.dataStore.data
.map { preferences ->
preferences[EXAMPLE_KEY]
}
Thus, DataStore provides safe, asynchronous, and reactive data storage with a convenient API.