我是Kotlin协程的新手,对此有些怀疑。因此,我尝试使用Kotlin协程下载字体列表,并添加了一些日志,以查看何时下载了字体或已存在的消息。我希望每次访问字体时都会看到一个日志,但是我只看到了progressBar,当它被隐藏时,我会立即看到所有日志。我在做错什么吗?
private fun init() {
val job = Job()
val bgScope = CoroutineScope(Dispatchers.IO + job)
bgScope.launch {
getStuff()
}
}
fun getStuff() {
val uiScope = CoroutineScope(Dispatchers.Main + Job())
uiScope.launch {
progressbar.visibility = View.VISIBLE
}
for (font in jsonObject.fontList) {
if (!font.exists()) {
downloadFile(font)
Timber.d("file " + font.id + " downloaded: " + font.exists())
} else {
Timber.d("file " + font.id + " already exists ")
}
}
uiScope.launch {
progressbar.visibility = View.GONE
}
答案 0 :(得分:0)
那是因为您的
for (font in jsonObject.fontList) {
if (!font.exists()) {
downloadFile(font)
Timber.d("file " + font.id + " downloaded: " + font.exists())
} else {
Timber.d("file " + font.id + " already exists ")
}
}
在另一个线程中运行,并延迟了响应。因此,downloadFile
完成后,您应该修改进度可见性。
您应在downloadFileMethod()
内部启动协程,并打开/关闭进度条。