适用于 Android 的 Firebase 数据库 - 使用持久性在离线时写入事件

edo*_*rnd 5 android persistence offline firebase firebase-realtime-database

如标题所述,我正在使用 Firebase 实时数据库,并启用了持久性

正如指南中所述,

通过启用持久性,Firebase 实时数据库客户端在联机时同步的任何数据都会持久保存到磁盘,并且即使在用户或操作系统重新启动应用程序时也可以脱机使用。这意味着您的应用程序可以像在线一样使用存储在缓存中的本地数据。侦听器回调将继续触发本地更新

虽然ValueEventListener和每个读取侦听器都会发生这种情况,但我找不到一种方法使其也适用于写入操作。这是我的数据库助手类的片段:

    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
        }
    });
Run Code Online (Sandbox Code Playgroud)

即使启用了持久性,这应该使数据库以“反应式方式”运行,这两个侦听器也不会触发,直到数据库再次上线并最终将更新推送到服务器。

这并不是我真正所希望的,因为我预计一旦数据在本地缓存,该事件就会被触发。我知道我可以简单地忽略这些事件并假装它成功了,但我想知道,我是否错过了什么?有没有办法在数据被缓存后立即触发事件?

Fra*_*len 2

onSuccess当数据写入服务器上的数据库时,会触发写操作的监听器。

当数据写入本地队列时,不会触发任何事件。