Какие знаешь локальные контексты

«Какие знаешь локальные контексты» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android есть несколько способов хранения локального контекста:

  1. SharedPreferences – для простых данных (ключ-значение). Пример:
val prefs = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
prefs.edit().putString("key", "value").apply()
  1. Room – SQLite-обёртка для структурированных данных. Требует объявления Entity, DAO и Database.

  2. DataStore – современная замена SharedPreferences (поддержка Kotlin coroutines/Flow). Пример:

val dataStore = context.createDataStore(name = "settings")
dataStore.edit { settings -> settings[PreferencesKeys.TOKEN] = "abc123" }
  1. Файлы – прямое чтение/запись во внутреннее или внешнее хранилище:
context.openFileOutput("data.txt", MODE_PRIVATE).use { it.write("text".toByteArray()) }
  1. MMKV – высокопроизводительная key-value библиотека от Tencent.

Для небольших данных лучше DataStore/SharedPreferences, для сложных – Room. Всегда учитывайте безопасность (не храните критичные данные в plain text).