Ответ
В Android за работу с локальной БД обычно отвечает Room (библиотека поверх SQLite), а за сетевые запросы - Retrofit/OkHttp.
Для объединения этих задач используют Repository - слой, который абстрагирует источник данных. Пример:
class UserRepository(
private val localDataSource: UserDao,
private val remoteDataSource: UserService
) {
suspend fun getUsers(): List<User> {
val localUsers = localDataSource.getUsers()
return if (localUsers.isEmpty()) {
val remoteUsers = remoteDataSource.getUsers()
localDataSource.insertAll(remoteUsers)
remoteUsers
} else {
localUsers
}
}
}
Ключевые моменты:
- Репозиторий управляет кэшированием
- Работает с разными источниками данных
- Обычно используется вместе с ViewModel и LiveData/Flow