Ответ
Preferences DataStore — это современная замена SharedPreferences, предоставляющая асинхронный и типобезопасный API для хранения пар ключ-значение. Основан на Kotlin Coroutines и Flow.
Ключевые особенности:
- Работает в фоновом потоке по умолчанию
- Минимизирует риск ANR (в отличие от SharedPreferences)
- Поддержка Flow для реактивного подхода
- Нет поддержки синхронных операций
Пример использования:
// 1. Определение DataStore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// 2. Запись данных
suspend fun saveTheme(isDark: Boolean) {
dataStore.edit { preferences ->
preferences[PreferencesKeys.THEME_KEY] = isDark
}
}
// 3. Чтение данных
val themeFlow: Flow<Boolean> = dataStore.data
.map { preferences ->
preferences[PreferencesKeys.THEME_KEY] ?: false
}
object PreferencesKeys {
val THEME_KEY = booleanPreferencesKey("dark_theme")
}