有没有办法知道哪些数据没有上传到firebase上并且仍然存在于磁盘上?我使用 -
启用了离线功能FirebaseDatabase.getInstance().setPersistenceEnabled(true);
通过这样做,我的所有数据都会被缓存。我想知道上传了哪些数据,哪些不是。
答案 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()
后立即位于本地缓存中,但在回调触发之前不在服务器数据库中。