如何 运行 并行 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 {...}
我正在从 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 {...}