未调用Android Firebase addListenerForSingleValueEvent

时间:2017-05-30 20:20:10

标签: android firebase firebase-realtime-database

过去几周左右我一直在研究Android应用程序,我一直在使用firebase作为我的后端。我从firebase读取/写入没有任何问题,但最近,所有addListenerForSingleValueEvent调用都没有被触发。我不确定为什么会突然停止阅读。我的数据库规则(用于测试目的)是

  "rules": {
    ".read": true,
    ".write": true
  }

,相关代码是

    final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
    //searches database for user
    //This "LISTENING" println triggers
    System.out.println("LISTENING");
    mDatabase.child("users").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //This print statement never prints
            System.out.println("DATA SNAPSHOT");
            for(DataSnapshot user : dataSnapshot.getChildren()){
                for(DataSnapshot participant: user.getChildren()) {
                    //if we have found the participant name
                    if(participant.getKey().equalsIgnoreCase("Participant Name")){
                        System.out.println(participant.getValue().toString().trim());
                    }
                }
            }
            Intent intent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(intent);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("Error");

        }
    });

我还有其他几个addListenerForSingleValueEvent调用(在结构上类似,所以为了简洁起见,我不会在这里发布)直到大约2小时前工作正常。会发生什么事?这可能是firebase本身的问题吗?我的代码中有什么东西我可以忽略吗?

3 个答案:

答案 0 :(得分:0)

我最终通过切换模拟器来解决这个问题。我不确定究竟是什么问题,但这对我有用

答案 1 :(得分:0)

这里遇到同样的问题,但我正在用手机测试(huawei y560-l01)。

编辑:

我解决了卸载应用程序,取消设备,重新启动设备以及再次连接和运行代码的问题。

答案 2 :(得分:0)

我发现智能手机上的google play服务版本(可以参考:google-play-services.en.uptodown.com/android/old)需要匹配依赖项中声明的firebase版本。它不仅可以在模拟器上运行,还可以在设备上运行(Samsung J7)。