小编Max*_*Max的帖子

如何等待监听器完成执行

我在这里尝试做的是将下载 URL 添加到侦听器内的 ArrayList。添加完所有项目后,再打印 ArrayList。但是,由于侦听器是以异步方式执行的,因此 println 将始终打印一个空的 ArrayList。那么,我的问题是如何使其同步?这意味着 println 语句打印包含项目的 ArrayList。这是我的代码:

@Synchronized
    private fun postOfferNow() {
        val storageRef = storge.reference
        val images = ArrayList<String>()
        for (image in this. takenPicsPaths) {
            val file = Uri.fromFile(File(image))
            val ref = storageRef.child("Images/$offerOwnerID/${file.lastPathSegment}")
            ref.putFile(file).addOnFailureListener {

            }.addOnSuccessListener {
                ref.downloadUrl.addOnCompleteListener {
                    val url = it.result
                    images.add(url.toString()) //here is where I add items to images
                }
            }
        }
        println(images)// this will always print "[]"
    }
Run Code Online (Sandbox Code Playgroud)

android kotlin

5
推荐指数
1
解决办法
4840
查看次数

标签 统计

android ×1

kotlin ×1