如何 运行 并行 android 多个 kotlin 协程?

How to run multiple kotlin couroutines in parallel android?

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

suspend fun getImages() : ArrayList<VideoData> {
    
}
suspend fun getVideos() : ArrayList<ImageData> {

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

}

这三个函数必须并行执行。我不想等待所有这些都完成。当一个功能完成后,我想在主线程上执行一些代码,即 UI thread.

使用协程是一种选择。

创建您的暂停函数:

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> {...}

创建工作

val coroutineJob_1 = Job()

创建范围

val coroutineScope_1 = CoroutineScope(coroutineJob + Dispatchers.Main)
       

在您的 Activity/Fragment...

中使用范围启动作业
coroutineScope_1.launch {

     // Await
     val response = getImages()

     show(response)
}

show() 有您的 UI 代码。

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

coroutineScope_2.launch {...}
coroutineScope_3.launch {...}