Я использую сопрограмму для запуска приостановленного развлечения emitList
class MyViewModel : ViewModel() {
private var _list = MutableLiveData<ArrayList<ListItem>>()
val _list: LiveData<ArrayList<ListItem>>
get() = _list
fun refresh() = viewModelScope.launch {
emitList()
}
private suspend fun emitList() = runIfBounded {
withContext(Dispatchers.IO) {
// run some database access code
// post results to _list
}
}
}
сопрограмма запускается, но когда фрагмент, для которого используется виртуальная машина, уничтожается и воссоздается ViewPager, сопрограмма больше не запускается.
Идея состоит в том, чтобы публиковать список элементов, сгенерированных из запроса к базе данных, каждый раз, когда создается экземпляр фрагмента. Но по какой-то причине сопрограмма запускается только для первого экземпляра фрагмента, а не для любого последующего фрагмента.
Здесь во фрагменте onResume
я звоню refresh
override fun onResume() {
super.onResume()
viewModel.refresh()
}
Я просто запуталась. Любой совет? Спасибо.