Я пытаюсь обновить интерфейс между вызовами метода suspend, когда получаю результаты от них.Например, вот мой класс ViewModel.Методы a (), b () и c () являются методами приостановки.
class MainViewModel : ViewModel() {
lateinit var userLiveData: LiveData<String>
var repo = MainRepo()
fun startTest() {
userLiveData = liveData {
var a = repo.a()
System.out.println("@@@@@@@@ $a")
emit(a)
var b = repo.b(a)
System.out.println("@@@@@@@@ $b")
emit(b)
var c = repo.c(b)
System.out.println("@@@@@@@@ $c")
emit(c)
}
}
}
, и это мой класс Activity, где я наблюдаю за LiveData
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
viewModel.startTest()
viewModel.userLiveData.observe(this, Observer {
text.text = it
})
и классом Repo.
class MainRepo {
suspend fun a(): String{
delay(1000)
return "A"
}
suspend fun b(a: String): String{
delay(5000)
return a + "B"
}
suspend fun c(b: String): String{
return b + "-C"
}
}
Мой вопрос: как я могу обновить пользовательский интерфейс с результатами после того, как я позвоню repo.a()
или repo.b()
или repo.c()
.Заранее спасибо.