Firebase数据库Cashed数据

时间:2016-09-02 18:59:08

标签: android firebase firebase-realtime-database

有没有办法知道哪些数据没有上传到firebase上并且仍然存在于磁盘上?我使用 -

启用了离线功能
FirebaseDatabase.getInstance().setPersistenceEnabled(true);  

通过这样做,我的所有数据都会被缓存。我想知道上传了哪些数据,哪些不是。

1 个答案:

答案 0 :(得分:3)

API中没有方法返回指示哪些写操作尚未提交给Firebase服务器。如果您需要该状态,您可以自行管理。 setValue()updateChildren()方法提供了两个选项,可在将值提交到Firebase服务器时获取回调。一种选择是提供CompletionListener参数:

FirebaseDatabase.getInstance().getReference("test")
    .setValue("SomeValue", new DatabaseReference.CompletionListener() {
        @Override
        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
            if (databaseError == null) {
                // the data was successfully committed to the server
            } else {
                // the operation failed, for example permission failure
            }
        }
    });

另一个选项是为返回的Task添加一个监听器:

FirebaseDatabase.getInstance().getReference("test")
        .setValue("SomeValue").addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            // the data was successfully committed to the server
        } else {
            // the operation failed, for example permission failure
        }
    }
});

对于这两种情况,更新在调用setValue()updateChildren()后立即位于本地缓存中,但在回调触发之前不在服务器数据库中。