Где будешь хранить кеш в твоем проекте

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

Ответ

Для кеширования данных в Android проекте я бы использовал:

  1. SharedPreferences - для простых данных (настройки, флаги)
val prefs = getSharedPreferences("AppPrefs", MODE_PRIVATE)
prefs.edit().putString("token", "abc123").apply()
  1. Room Database - для структурированных данных (списки, сложные объекты)
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}
  1. Файловый кеш - для бинарных данных (изображения, документы)
val cacheFile = File(context.cacheDir, "image_cache.jpg")
  1. Memory Cache (LruCache) - для временного хранения в оперативке
val memoryCache = LruCache<String, Bitmap>(maxMemory / 8)

Выбор зависит от типа данных, частоты обновления и требований к производительности. Для критичных данных добавляю механизмы инвалидации кеша.