Kotlin 协程等待作业完成



我有一个视图模型。在其中,我有一个功能,可以从手机内部存储中获取一些图像。

在获取完成之前,它会在主活动中公开实时数据。如何创建协程以等待任务完成并公开实时数据。

// This is my ViewModel
private val _image = MutableLiveData<ArrayList<File>>()
val images: LiveData<ArrayList<File>> get() = _image
fun fetchImage(){
val file = Path.imageDirectory  //  returns a directory where images are stored
val files = arrayListOf<File>()
viewModelScope.launch {
withContext(Dispatchers.IO) {
if (file.exists()) {
file.walk().forEach {
if (it.isFile && it.path.endsWith("jpeg")) {
files.add(it)
}
}
}
files.sortByDescending { it.lastModified() } // sort the files to get newest 
// ones at top of the list
}
}
_image.postValue(files)
}

有没有其他方法可以通过任何其他方法使此代码更快?

这样做:

fun fetchImage() = viewModelScope.launch {
val file = Path.imageDirectory  //  returns a directory where images are stored
val files = arrayListOf<File>()
withContext(Dispatchers.IO) {
if (file.exists()) {
file.walk().forEach {
if (it.isFile && it.path.endsWith("jpeg")) {
files.add(it)
}
}
}
files.sortByDescending { it.lastModified() } // sort the files to get newest
// ones at top of the list
}
_image.value = files
}

最新更新