我在这里尝试做的是将下载 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)