【发布时间】:2018-02-11 08:33:51
【问题描述】:
如标题所述,我使用的是 Firebase 实时数据库,启用了持久性。
如指南所述,
通过启用持久性,Firebase 实时数据库客户端在联机时将同步的任何数据都会持久保存到磁盘并且可以脱机使用,即使用户或操作系统重新启动应用程序也是如此。这意味着您的应用程序可以使用存储在缓存中的本地数据像在线一样工作。 侦听器回调将继续触发本地更新。
虽然 ValueEventListeners 和每个读取侦听器都会发生这种情况,但我无法找到一种方法使其也适用于写入操作。 这是我的数据库助手类中的一个 sn-p:
DatabaseReference userRef = root.child("users").child(user.getUid());
userRef.setValue(user).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
//handle success event
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//handle failure event
}
});
即使启用了持久性,这也应该使数据库以“反应方式”运行,这两个侦听器不会触发,直到数据库再次联机并最终将更新推送到服务器。
这并不是我真正希望的,因为我预计一旦数据在本地缓存后就会触发事件。 我知道我可以简单地忽略这些事件并假装它成功了,但我想知道,我错过了什么吗?有没有办法在数据缓存后立即触发事件?
【问题讨论】:
标签: android firebase firebase-realtime-database persistence offline