Ответ
Для работы с базой данных и передачи данных в UI в Android рекомендуется использовать архитектурные компоненты, такие как ViewModel и LiveData/Flow. Вот пример с Room и Kotlin:
// Entity
@Entity
data class User(
@PrimaryKey val id: Int,
val name: String
)
// DAO
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): Flow<List<User>>
}
// ViewModel
class UserViewModel(application: Application) : AndroidViewModel(application) {
private val dao = UserDatabase.getDatabase(application).userDao()
val users: LiveData<List<User>> = dao.getAll().asLiveData()
}
// Activity/Fragment
viewModel.users.observe(this) { users ->
// Update UI with users list
adapter.submitList(users)
}
Ключевые моменты:
- Room предоставляет абстракцию над SQLite
- ViewModel сохраняет данные при смене конфигурации
- LiveData/Flow автоматически обновляют UI при изменении данных
- Все операции с БД выполняются в фоновом потоке