Что такое Preferences DataStore

«Что такое Preferences DataStore» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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")
}