Ответ
При добавлении элементов в базу Room с подпиской через Flow, Flow автоматически эмитит новые данные при каждом изменении таблицы. Room интегрирован с Flow и уведомляет подписчиков о любых изменениях в наблюдаемых таблицах.
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getUsers(): Flow<List<User>>
}
// В ViewModel
val users: Flow<List<User>> = userDao.getUsers()
// В UI (Compose)
LaunchedEffect(Unit) {
viewModel.users.collect { users ->
// Будет вызываться при каждом изменении таблицы users
}
}
Важные моменты:
- Flow работает асинхронно и не блокирует UI
- Подписка активна до отмены (например, при уничтожении ViewModel)
- Room автоматически управляет уведомлениями об изменениях
- По умолчанию Flow запускается в Dispatchers.IO