【发布时间】:2020-07-16 16:22:53
【问题描述】:
我用协程来启动暂停的乐趣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
}
}
}
协程启动,但是当vm用于的片段被ViewPager销毁并重新创建时,协程不再启动。
这个想法是在每次实例化片段时发布从数据库查询生成的项目列表。但是由于某种原因,协程只针对第一个实例化的片段启动,而不是之后的任何片段。
这里是片段的onResume 我叫refresh
override fun onResume() {
super.onResume()
viewModel.refresh()
}
我只是感到困惑。有什么建议吗?谢谢。
【问题讨论】:
标签: android kotlin kotlin-coroutines android-jetpack