Firebase存储的OnSuccessListener回调没有调用
通过Firebase存储上传文件时,onSuccess方法不会调用。
我目前正在运行Android Studio 3.0 Canary 2,其中包含“com.google.firebase:firebase-storage:10.2.6”。
fun uploadImage(pathToImage: String, downloadCallback: FirebaseCallback<String?>) { val file = Uri.fromFile(File(pathToImage)) val ref = mStorRef.child("images/"+file.lastPathSegment) ref.putFile(file).addOnSuccessListener { object : OnSuccessListener<UploadTask.TaskSnapshot> { override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) { val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) } } } }
通过使用{}
,您通过SAM转换传递一个lambda作为侦听器。 在这个lambda里面,你定义了成功应该发生的事情:你正在创建一个从未使用过的object
。 要传入侦听器的object
,使用()
:
ref.putFile(file).addOnSuccessListener ( object : OnSuccessListener<UploadTask.TaskSnapshot> { override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) { val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) } } )
或者只用SAM转换,而不显式创建一个object
:
ref.putFile(file).addOnSuccessListener { taskSnapshot -> val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) }