我使用协程启动挂起的fun 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()
}我只是有点迷惑。有什么建议吗?谢谢。
发布于 2020-07-17 01:38:14
修复方法是使用
GlobalScope.launch { }不
viewModelScope.launch { }https://stackoverflow.com/questions/62939140
复制相似问题