Kotlin 协程:为什么直到最后我都看不到日志?



我是 kotlin 协程的新手,有一些疑问。所以我正在尝试使用 kotlin 协程下载字体列表,并添加了一些日志以查看字体何时下载,或者当字体已经存在时显示消息。我希望每次访问字体时都会看到一个日志,但是我只看到进度条,当它被隐藏时,我一次看到所有日志。我做错了什么吗?

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
    }

那是因为你的

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()内启动协程,同时打开/关闭进度条。

相关内容

  • 没有找到相关文章

最新更新