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

ValueEventListener仅触发onDataChange方法一次

祁鸿晖
2023-03-14

我在Android应用程序中遇到了Firebase实时数据库的问题。

我正在尝试的是实时更新列表。但更新只适用于应用程序启动。它不会自动更新。所以,我需要重新启动的应用程序,每当想要更新。

有缺少的部分吗?谢谢你的帮助。谢谢

问题:监听器仅在应用程序重启时触发了onDataChange方法。数据正确。但是监听器在那之后就不起作用了。

代码:

mRef = FirebaseDatabase.getInstance().getReference();
mPostRef = mRef.child(DbUtils.POST_CHILD);
mPostRef.keepSynced(true);

mPostRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<Post> objList = new ArrayList<>();
        for(DataSnapshot objSnapShot: dataSnapshot.getChildren()){
            Post obj = objSnapShot.getValue(Post.class);
            obj.setKey(objSnapShot.getKey());
            objList.add(obj);
        }
        mAdapter.addAllAndNotify(objList);

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.i("Posts", "Listener was canceled");
    }
});

共有1个答案

濮阳和泰
2023-03-14

最后,我找到了bug。

事实是Firebase不支持多连接。因此,我从活动中删除了所有其他数据库引用。现在它可以工作了。

谢谢那些试图帮助我的人。

 类似资料:
  • 问题内容: 我正在尝试模拟Firefox和iTunes菜单栏的行为。行为:菜单栏最初是隐藏的。但是,当您按时,会出现菜单栏(选择了第一项),而当您没有选择菜单项时,菜单栏会消失。我的想法是侦听选择更改通过其。 但是,附加的SSCCE的行为不是所希望的。框架加载后,看不到。当您按时,菜单栏出现,并选择了第一个菜单(由于)。但是,随后的所有按下均不会触发。我不知道为什么… 有人要散发出光吗? 问题答案

  • 我有一个Azure Web作业,其中包含一些blob触发的函数。我通过门户上的添加作业对话框将其上传到Azure,并将其设置为“连续运行”预期的行为是,任何时候将blob添加 /modifiedblob中指定的容器都会触发调用相应的函数。但是这不会发生。 触发这些功能的唯一方法(在上传blobs之后)是停止web作业并再次重启它。 每次我重启作业时,这些功能似乎都被触发了,而且只触发了一次。任何后

  • 我使用的是spring boot、kotlin和junit5。我有一个测试类,当我在未触发所有函数之前使用RunWith(SpringRunner::class)@时,但当我删除该类时,它会给lateinit字段带来错误。

  • 问题内容: 这是我遇到的问题-我需要每2小时触发一次作业构建,但前提是存在git commit(如果没有活动,则跳过)。我可以单独解决它们,但不确定如何一起解决- 有人有什么好主意吗?我唯一能想到的是一个cron作业,该作业每2小时检查一次,并且在此期间是否有git commit,请手动触发作业,但这看起来并不那么优雅。 任何好的想法表示赞赏。 问题答案: 将詹金斯设置为每2小时(0 * / 2

  • 我想让我的discord机器人每隔5秒发送一条消息,告诉我如果我最近在聊天中输入了什么,你已经说了。例如,如果我发送这些消息(如下)Hi(消息1,一秒钟过去了)Hi(消息2,两秒钟过去了)Hi(消息3,三秒钟过去了)Hi(消息4,5秒钟过去了)(机器人说):你说话了(记住,机器人只说了一次,不是四次) 但是,到目前为止,它处于空闲状态,不发送任何消息。我没有收到任何错误,并且bot本身运行并且在线

  • 我有一个包含复杂输入(一些图表数据)的子组件。在获得 API 响应后,我通过 Angular 5 中的 @Input() 装饰器从父组件发送此图表数据。因此,每次在父组件上更改图表时,我都需要根据API响应同步图表,因此,OnChange生命周期。但不幸的是,我无法让它正常工作。我尝试使用基本数字类型设置虚拟输入字段并递增它,但徒劳无功。这是我的实现: 子图表组件: 父组件html: 父组件: P