override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
lifecycleScope.launch(Dispatchers.Main) {
networkviewModel.productist.collectLatest {
when (it) {
Resource.Empty -> {
Log.e("product", "" + "empty")
}
is Resource.Failure -> {
Log.e("product", "" + "failure")
}
Resource.Loading -> {
}
is Resource.Success -> {
val response = it.value
Log.e("test","success response")
val products: List<Products> = response.data
val variants: List<Variants> = response.data.map { it.variants }.flatten()
lifecycleScope.launch(Dispatchers.IO) {
productRoom.insertProducts(products)
productRoom.insertVariants(variants)
val subcategoryid = SubCategoryList(response.data[0].subcategory_id!!.toInt())
productRoom.insertSubCat(subcategoryid)
}
subcat_id = response.data[0].subcategory_id!!.toInt()
roomviewModel.productFlow.collectLatest{
Log.e("test","flow success from network room")
// Log.e("test",it.toString())
LoadingUtils.hideDialog()
proadapter.setMutableArraylist(it)
proadapter.notifyDataSetChanged()
}
}
}
}
}
}
我得到了致命异常错误:主要流程:网站名称:13125错误代码:索引:0,大小:0
因为在Resource.Success -〉collect完成之前调用了IO线程进程
我希望完成IO线程,然后从空间中收集值
2条答案
按热度按时间khbbv19g1#
在收集之前尝试使用
withContext(Dispatchers.IO)
,它将被挂起,直到所有操作完成:顺便说一句,你不需要使用
Dispatchers.Main
来启动主协程,默认情况下,lifecycleScope
在Dispatchers.Main
上下文中工作,所以你只需要写:cxfofazt2#
崩溃发生在这行代码中
请尝试将其更改为