当前位置: 首页 > 知识库问答 >
问题:

如何在Firebase实时数据库中处理离线事务?

贝阳泽
2023-03-14

我有一个addValueEventListener可以监听Firebase实时数据库中的任何值更改。在线模式下,一切正常。

但在脱机模式下,设备处于脱机状态,我的Web服务器在Firebase实时数据库上完成了多个事务,其值与我从Android中输入的侦听器的值相同。设备联机后,它将只侦听最后一个事务,并跳过其间完成的其他事务。

PFB参考链接。到目前为止我已经完成的PFB代码:

     FirebaseDatabase.getInstance().setPersistenceEnabled(false);
        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myRef = firebaseDatabase.getReference("mykey");
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                    HashMap<String, Object> key_Value = (HashMap<String, Object>) dataSnapshot.getValue();
                    for (String key : key_Value.keySet()) {
                        System.out.println("firebase key is "+key);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w("feroz ", "Failed to read value.", error.toException());
            }
        });
    }

共有1个答案

封飞
2023-03-14

Firebase实时数据库存储从查询返回的信息,以便在断开连接时使用。对于断开连接时出现的问题,Firebase实时数据库将继续处理已堆积的信息。如果请求的信息没有堆积起来,Firebase实时数据库会从附近的保护区加载信息。当我们返回在线时,我们的信息将堆叠并镜像查询。

例如,在我们的应用程序中有一段代码,它询问Firebase实时分数数据库中的最后四项内容

DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.orderByValue().limitToLast(4).addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot snapshot, String previousChild) {
      System.out.println("The " + snapshot.getKey() + " dinosaur's score is " + snapshot.getValue());
    }
});
 类似资料:
  • 我第一次在firebase上工作,了解firebase的脱机功能,测试了两个场景: 设想1(工作): > 按后退按钮(关闭应用程序) 场景2(不工作): 脱机模式,将数据写入firebase数据库 关闭应用程序 从后台删除应用程序(删除应用程序) 已联机,未添加数据 我加了一行: 如何处理场景2?我需要通过本地数据库处理这个场景吗?

  • 我注意到,如果我发送一些数据到数据库,同时互联网连接被删除,在我重新连接后,数据不会被重新发送。此功能不适用于统一或我错过了什么?这个文档说这应该行得通,但事实并非如此:https://firebase.google.com/docs/database/unity/save-data#write_data_offline

  • 问题内容: 我目前正在使用angularJS和phonegap构建适用于Android / iOS的测试应用程序。 该应用程序仅使用存储在Firebase数据库中的文本数据。我希望该应用程序具有自己的本地数据库(在设备离线时使用),并在某个时间(设备在线时)与Firebase数据库同步。 离线模式使用phonegap / cordova的存储API。我可以检查设备的在线状态并定期备份在线数据库吗?

  • 在做任何其他事情之前,我想澄清,我问的是而不是。 背景: 我有一个应用程序,同时使用Firestore和Firebase实时数据库。我发现了一种单元测试Firestore的方法,通过在dart pub使用cloud firestore模拟包来模拟它。到目前为止,我一直在试图搜索是否有任何Firebase实时数据库的等价物,我没有看到任何。这里和谷歌都有.. 所以我的问题是,如何创建一个需要模拟Fi

  • 这是我的用户。kt 我做错了什么?

  • 我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据