Android 除非我注销并重新登录,否则不会调用Firebase onDataChange或onCancelled

Android 除非我注销并重新登录,否则不会调用Firebase onDataChange或onCancelled,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,嗨,我遇到了一个奇怪的问题,有时在我的手机上构建我的应用程序时,不会调用onDataChange或onCancelled 我试图解决这个问题的方法是: 确保所有代码都是正确的。我大部分时间都在这里,但当注销和重新登录修复了这个问题时,我意识到代码必须正常工作 确保用户已通过身份验证,否则将发送到登录屏幕。由于RequesteMail是由FirebaseAuth.getInstance().getCurrentUser().getEmail()初始化的,因此我假设该用户仍处于身份验证状态 确保我的

嗨,我遇到了一个奇怪的问题,有时在我的手机上构建我的应用程序时,不会调用onDataChange或onCancelled

我试图解决这个问题的方法是:

  • 确保所有代码都是正确的。我大部分时间都在这里,但当注销和重新登录修复了这个问题时,我意识到代码必须正常工作
  • 确保用户已通过身份验证,否则将发送到登录屏幕。由于RequesteMail是由FirebaseAuth.getInstance().getCurrentUser().getEmail()初始化的,因此我假设该用户仍处于身份验证状态
  • 确保我的读写规则都打开了

  • 尝试了addValueEventListener和addListenerForSingleValueEvent

  • 以下是我的代码示例:

     private void UpdateFriendList(){
    
        String passing = "Users/"+requesteEmail+"/Friends";
        DatabaseReference myRef = database.getReference("Users/"+requesteEmail+"/Friends");
        Log.d("TAGL","my Refs VAlue is : "+ myRef.toString());
        Log.d("TAGL","outside THE PLACE above passing: "+ passing);
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d("TAGL","IN the datachange");
                populateFirendsLists(dataSnapshot);
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.d("TAGL","EROR ");
            }
        });
        Log.d("TAGL","outside THE PLACE below");
    }
    
    这是一个带有括号的logcat,用于替换某些字符串以保护隐私

    我的参考值是:(应用路径)/用户/(用户路径)/朋友

    在上面传递的位置之外:用户/(路径)/朋友

    在下面的地方之外

    当我注销并重新登录时,它与正在调用的日志状态和函数一起工作

    奇怪的是,重新启动应用程序并没有改变任何事情。因此,如果它工作,我重新启动应用程序,它将继续工作。但如果它不起作用,重新启动它也无法修复它。也许是安卓工作室的事?但我觉得这听起来不对

    这个奇怪的bug似乎只有在我登录、构建和运行应用程序时才会出现。然而,构建和运行应用程序并不总是会出现这种故障,只是有时会出现


    你们都知道为什么有时候会发生这种情况吗?我不确定什么会阻止onDataChange和onCancelled不被调用。

    我现在也尝试重新验证用户,但这并不能解决问题。似乎是注销修复了FirebaseAuth.getInstance().signOut(),不知道为什么,有什么新消息吗?我得到了同样的东西。事实上是的!所以很明显,当我通过android studio安装firbase时,出现了一个小故障,我不得不手动修复。我认为这涉及到自动刷新代币,但这是很久以前的事了,我记不清了。我忘了我在谷歌上搜索了什么,但我发现了一个图表,它带我走过了所有的台阶,没有修复它。我认为这是谷歌自己做的。如果你仍然需要一个解决方案,我可以尝试在我的电脑上找到它,但我不确定我是否仍然有它。否则我会用谷歌搜索或者联系他们,他们可能会提供给你。