我正在从android设备上获取图像、视频和音乐文件。我想使用三个并行的couroutines在后台运行我的代码,而不阻塞UI线程。
suspend fun getImages() : ArrayList<VideoData> {
}
suspend fun getVideos() : ArrayList<ImageData> {
}
suspend fun getAudio() : ArrayList<AudioData> {
}这三个函数必须并行执行。我不想等待它们全部完成。当一个函数完成后,我想在主线程上执行一些代码。
发布于 2020-11-11 18:34:17
使用协程是一种选择。
创建您的挂起函数:
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)使用您的活动/片段中的作用域启动作业...
coroutineScope_1.launch {
// Await
val response = getImages()
show(response)
}show()有您的UI代码。
您可以启动多个作业来并行执行工作...
coroutineScope_2.launch {...}
coroutineScope_3.launch {...}https://stackoverflow.com/questions/64783727
复制相似问题