java - Firestore 离线写入事件

标签 java android google-cloud-firestore

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/

相关文章:

android - 错误 : Failed to launch application on device: ERROR: Failed to install apk to device: not installing on Android api level 23

android - Firebase 云消息传递仅在 Android 上看到最后的通知

Java 强制转换为父类(super class)并调用重载方法

Java:使用带有箭头键的击键

android - DrawaerLayout.onDrawerOpened 从未被调用

javascript - ReactJS 与 firebase.add 未定义错误

firebase - 删除 Firestore 中数组的索引

swift - Cloud Firestore & Swift - 检索文档并将字段分配给变量以进行处理

java - android点击按钮没有触发事件

java - 访问数据库时分离关注点的最佳实践