Firestore 仅在线调用 onComplete 等事件。如何了解写入状态离线。
db.collection("col").document(id).set(obj)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
//Ok finish activity <----
finish();
} else {
Toast toast = Toast.makeText(getApplicationContext(),
"Error try again", Toast.LENGTH_SHORT);
toast.show();
}
}
});
上面的代码不能离线工作,我可以多次编写。在我连接到互联网之前,onComplete 不会被调用。我如何实现此功能(成功时关闭 Activity )。
最佳答案
onComplete will not be called until I connect to the internet.
这是正常行为。仅当数据已写入或被 Firebase 服务器拒绝时才会调用 OnCompleteListener
。
监听器永远不会因本地写入操作而触发。如果本地写入操作失败,客户端将引发常规异常。 Firestore 客户端设计为即使离线也能继续工作。因此,离线时向数据库写入一些数据永远不会产生错误。
Ho do I implement this feature(closing activity when success).
您无法添加完成监听器来了解数据何时写入缓存,这是因为此操作是立即发生的。在这种情况下您无需担心。
在这种情况下,您可以检查互联网连接。如果您处于离线状态,则意味着所有数据都添加到本地缓存中。
关于java - Firestore 离线写入事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59721740/