在androidsdk中,如何使用多个协同路由运行for循环?
我有一个函数,可以在视图上呈现SVG,并为我生成缩略图(位图)。这必须发生在应用程序的开始,因此所有SVG和缩略图都已正确加载。呈现新SVG的每个周期都需要一段时间。所以,现在,这是我目前的解决方案(无可否认,这是一个非常糟糕的解决方案)。因为渲染需要一点白色,所以我会在两次渲染之间暂停50毫秒:在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
// 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:协同程序遍历所有内容,没有一个缩略图得到渲染。