Я использую версию LiveData "androidx.lifecycle: lifecycle-aliveata-ktx: 2.2.0-alpha05". Как только мой блок LiveData выполняется успешно, я хочу явно запустить его снова, например,
- Я перехожу к фрагменту
- Загрузка данных пользователя
- Я нажимаю "Удалить"находясь в том же фрагменте
- Данные пользователя должны обновляться
У меня есть фрагмент, где я наблюдаю мои LiveData, ViewModel с LiveData и репозиторием:
ViewModel:
fun getUserLiveData() = liveData(Dispatchers.IO) {
val userData = usersRepo.getUser(userId)
emit(userData)
}
Фрагмент:
viewModel.getUserLiveData(viewLifecycleOwner,
androidx.lifecycle.Observer {..
Затем я пытаюсь добиться желаемого поведения, такого как:
viewModel.deleteUser()
viewModel.getUserLiveData()
Согласно документации, приведенной ниже, блок LiveData не будет выполняться, если он завершился успешно, и если я поместил while (true) внутри блока LiveData, то мои данные обновятся,однако я не хочу этого делать, так как мне нужно обновить свое представление реактивно.
Если [блок] завершается успешно, или отменяется по причинам, отличным от [LiveData] становится неактивным, он не будет быть повторно выполненным даже после того, как [LiveData] пройдет активный неактивный цикл.
Возможно, мне чего-то не хватает, как я могу использовать тот же LiveDataScope для достижения этой цели? Любая помощь будет оценена.