Если вы не вернете LiveData из комнаты, вы не будете получать обновления из БД. Однако вы можете вернуть LiveData из вашего viewModel.
val data = liveData {
emit(repository.getTask(id))
}
Функция расширения liveData
запускается в сопрограмме, а затем вы можете использовать приостановленную версию DAO для правильной обработки фона.
@Query("SELECT * FROM task_table WHERE id = :id")
suspend fun getTask(id: Int): Task?
Главное, что вам нужно сделать, это убедиться, что оно имеет значение null, если вы не используете агрегатную функцию в своем запросе.
Если вы действительно хотите вызвать метод в вашем viewModel для возврата задание, которое вы должны запустить из своей деятельности / фрагмента (не рекомендуется)
ViewModel
suspend fun getTask(id: Int): Task {
repository.getTask(id)
}
Activity/Fragment
lifecycleScope.launch {
val task = viewModel.getTask(id)
// Do What you want with the task
}