Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在androidsdk中,如何使用多个协同路由运行for循环?_Android_Kotlin_Concurrency_Kotlin Coroutines - Fatal编程技术网

在androidsdk中,如何使用多个协同路由运行for循环?

在androidsdk中,如何使用多个协同路由运行for循环?,android,kotlin,concurrency,kotlin-coroutines,Android,Kotlin,Concurrency,Kotlin Coroutines,我有一个函数,可以在视图上呈现SVG,并为我生成缩略图(位图)。这必须发生在应用程序的开始,因此所有SVG和缩略图都已正确加载。呈现新SVG的每个周期都需要一段时间。所以,现在,这是我目前的解决方案(无可否认,这是一个非常糟糕的解决方案)。因为渲染需要一点白色,所以我会在两次渲染之间暂停50毫秒: // this is the render function ~ Not important in this question fun render () { drawView.invalid

我有一个函数,可以在视图上呈现SVG,并为我生成缩略图(位图)。这必须发生在应用程序的开始,因此所有SVG和缩略图都已正确加载。呈现新SVG的每个周期都需要一段时间。所以,现在,这是我目前的解决方案(无可否认,这是一个非常糟糕的解决方案)。因为渲染需要一点白色,所以我会在两次渲染之间暂停50毫秒:

// this is the render function ~ Not important in this question
fun render () {
    drawView.invalidate() // refresh the view
    drawView.artwork = artworks[index] // find next artwork
    artworks[index].renderThumbnail() // render
}
//这是当前的主要功能

fun main () {
        thread(start = true) {
            (0 until AppData.artworks.count()).map {
                render() // render a new SVG
                Thread.sleep(50) // because it takes a while, sleep for 50 millies
            }
        }
}
所以,现在我正试图通过协同程序实现同样的目标。以下是我的协同程序方法,但它实际上不起作用:

CoroutineScope(Dispatchers.Main).launch {
    (0 until AppData.artworks.count()).map {
        async(Dispatchers.IO) { 
            render() // render a new SVG
        }
    }.awaitAll()
}

任何建议都值得欣赏。

2个问题:“因为需要一段时间,睡50分钟”,是什么?您的协同程序方法“真的”不起作用。什么有效,什么无效?Q1:呈现缩略图的过程。这需要一点时间。我不知道多长时间,但通过实验,我发现50毫秒就足够了。问题2:协同程序遍历所有内容,没有一个缩略图得到渲染。