我正在尝试将图像从服务器加载到
ImageView
button.setOnClickListener {
CoroutineScope(Dispatchers.IO).launch {
val url = mainApi.loadMyImage()
Picasso.with(requireContext()).load(url)
.into(imgView)
}
}
毕加索出现错误:
java.lang.IllegalStateException:方法调用应该从主线程发生。
你能解释一下我的代码中主线程和
CoroutineScope
之间通信的正确方法吗?
当你想改变UI时,你必须在主线程上进行。所以,你在IO线程中获取数据,然后在主线程上更新UI
这是代码:
button.setOnClickListener {
CoroutineScope(Dispatchers.IO).launch {
val url = mainApi.loadMyImage()
withContext(Dispatchers.Main){
Picasso.with(requireContext()).load(url)
.into(imgView)
}
}
}