我注意到,在关闭互联网连接并将其重新打开后(当我Android app仍在运行时,在后台还是没有),Firestore重新获得与服务器的连接需要相当长的时间(大约一分钟) ),Firestore在重新获得连接之前,我无法进行任何操作.
这是正常行为吗?如果是,我可以以某种方式检查Firestore模块当前的连接状态吗?(以便在需要时限制用户的操作).
我读的时候在Android在离线模式下的onComplete()方法永远不会返回,除非该设备在线这样的数据可以被保存到在公司的FireStore的backen.
当我处于离线模式并执行此操作时,get()我注意到它返回时我认为必须是本地数据,因为我有setPersistenceEnabled(true)
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
}
});
Run Code Online (Sandbox Code Playgroud)
我只是要问这是否正确?如果是这样,我可以检查数据是否为在线/离线数据?
有时做这get()件事它不会永远挂在那里,也许这与我的设备在经过大量调试后变暖有关.
我正在 Android 中使用 firestore。我想允许我的用户在离线模式下将数据保存在应用程序中。(离线期间的数据插入也工作正常)但我不知道如何检测数据是在离线模式下添加的,我需要获取文档添加的 id。在在线模式下,我可以使用侦听器检测数据插入。
Map<String, Object> data = new HashMap<>();
data.put("name", "Tokyo");
data.put("country", "Japan");
db.collection("cities")
.add(data)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Log.d(TAG, "DocumentSnapshot written with ID: " + documentReference.getId());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error adding document", e);
}
});
Run Code Online (Sandbox Code Playgroud)
我还需要检测应用程序离线时添加的内容。那我该怎么办呢?因为这些侦听器仅在数据插入服务器并且应用程序从服务器获取响应时才起作用。
据我所知,当互联网连接中断时,Flutter Firestore 操作将继续重试。有没有办法设置超时持续时间,以便 Firestore 在超过超时持续时间时在 CatchError 中抛出错误?
我正在使用Firebase Firestore,并且遇到读操作问题:我使用onCompleteListener,在其中,如果操作成功或失败,我将调用不同的回调。问题是,如果存在网络问题,则会调用onCompleteListener,但是task.isSuccessfull返回true!所以我得到一个空的结果,我无法与一个真正的空结果区分开。有什么方法可以将网络问题与空读取区分开吗?
非常感谢你!我的功能如下:
dataBase.collection(COLLECTION)
.whereEqualTo(FIELD, searched)
.get()
.addOnCompleteListener { task: Task<QuerySnapshot> ->
if (task.isSuccessful) {
listenerSuccess(task.result)
} else {
listenerError()
}
}
Run Code Online (Sandbox Code Playgroud)