首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中并行运行多个kotlin couroutines?

如何在android中并行运行多个kotlin couroutines?
EN

Stack Overflow用户
提问于 2020-11-11 17:26:24
回答 1查看 584关注 0票数 1

我正在从android设备上获取图像、视频和音乐文件。我想使用三个并行的couroutines在后台运行我的代码,而不阻塞UI线程。

代码语言:javascript
复制
suspend fun getImages() : ArrayList<VideoData> {
    
}
suspend fun getVideos() : ArrayList<ImageData> {

}
suspend fun getAudio() : ArrayList<AudioData> {

}

这三个函数必须并行执行。我不想等待它们全部完成。当一个函数完成后,我想在主线程上执行一些代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 18:34:17

使用协程是一种选择。

创建您的挂起函数:

代码语言:javascript
复制
suspend fun getImages() : ArrayList<VideoData> {

    withContext(Dispatchers.IO) {
        // Dispatchers.IO
        /* perform blocking network IO here */
    }
}
suspend fun getVideos() : ArrayList<ImageData> {...}
suspend fun getAudio()  : ArrayList<AudioData> {...}

创建作业

代码语言:javascript
复制
val coroutineJob_1 = Job()

创建作用域

代码语言:javascript
复制
val coroutineScope_1 = CoroutineScope(coroutineJob + Dispatchers.Main)

使用您的活动/片段中的作用域启动作业...

代码语言:javascript
复制
coroutineScope_1.launch {

     // Await
     val response = getImages()

     show(response)
}

show()有您的UI代码。

您可以启动多个作业来并行执行工作...

代码语言:javascript
复制
coroutineScope_2.launch {...}
coroutineScope_3.launch {...}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64783727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档