【发布时间】:2020-03-08 00:28:33
【问题描述】:
我正在开发一个使用 Cloud Firestore 存储数据的 Android 应用。这就是我将数据设置到数据库的方式:
private fun setData() {
val task = UploadDataTask()
task.setOnUploadFinishedListener(object: UploadDataTask.OnUploadFinishedListener{
override fun uploadFinished() {
// Do something
}
override fun uploadFailed() {
// Do something
}
})
}
private class UploadDataTask: AsyncTask<Void, Void, Void>() {
private var onUploadFinishedListener: OnUploadFinishedListener? = null
fun setOnUploadFinishedListener(listener: OnUploadFinishedListener) {
onUploadFinishedListener = listener
}
override fun doInBackground(vararg params: Void?): Void? {
val map = hashMapOf(
UID to firebaseUser.uid
)
firebaseFirestore.collection(USERS)
.document(firebaseUser.uid)
.set(map)
.addOnSuccessListener {
if(onUploadFinishedListener != null)
onUploadFinishedListener!!.uploadFinished()
}
.addOnFailureListener {
if(onUploadFinishedListener != null)
onUploadFinishedListener!!.uploadFailed()
}
return null
}
interface OnUploadFinishedListener {
fun uploadFinished()
fun uploadFailed()
}
}
这很好用,但有一个例外。当我想将数据加载到 Firestore,但没有连接到 Internet 时,onSuccessListener 和 onFailureListener 都不会被调用。我知道这是因为只有在将数据写入 Firestore 时才会调用它们。但我不知道有任何其他方法可以检查是否存在连接。例如,当我想在数据成功写入 Firestore 之前显示进度对话框时,如果没有连接,它不会关闭。那我该如何检查呢?
【问题讨论】:
标签: android firebase kotlin google-cloud-firestore