Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase实时数据库不';t更新值_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase实时数据库不';t更新值

Java Firebase实时数据库不';t更新值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我一直在使用firebase数据库编写一个应用程序,在过去的两天里,它不起作用。 我的意思是我有一个到数据库的连接,但是当我试图通过设置addListenerForSingleValueEvent来读取信息时,它不会运行ValueEventListener,即使我updateChildren DatabaseReference mBlaze = FirebaseUtil.getDatabase(PLACES); mBlaze.addListenerForSingl

我一直在使用firebase数据库编写一个应用程序,在过去的两天里,它不起作用。 我的意思是我有一个到数据库的连接,但是当我试图通过设置
addListenerForSingleValueEvent
来读取信息时,它不会运行
ValueEventListener
,即使我
updateChildren

        DatabaseReference mBlaze = FirebaseUtil.getDatabase(PLACES);
        mBlaze.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
                    System.out.println("Hello");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("Error");
            }
        });
        long sTime = System.currentTimeMillis();
        while (!triggers[0])
            if (System.currentTimeMillis() - sTime > 5000)
我在数据库中有一个触发器值,仅用于运行
addListenerForSingleValueEvent


如果我尝试在我的设备\模拟器上运行此操作,它将不会打印消息“Hello”,也不会打印消息“Error”。
这是一个问题的原因是我正在尝试根据firebase数据库验证代码。 我给它一个5秒的时间窗口,让值改变,这意味着代码被找到了,如果5秒后
的值触发[0]
没有改变,这意味着代码无效。

在我尝试减少代码的过程中,我偶然发现了
setLogLevel
,在我将其与
Level.DEBUG
一起使用后,我发现这一行反复出现:

获取令牌时出错:用户的凭据不再有效。用户必须重新登录


正如我在后面所说的,当我试图减少代码时,我发现了
setLogLevel
方法,它与
Level.DEBUG
一起使用,然后我使用它来发现错误:

获取令牌时出错:用户的凭据不再有效。用户必须重新登录

在四处窥探之后,我发现,由于Firebase身份验证机制(授予用户一个令牌24小时,然后取消身份验证)导致无法访问服务器。
因此,解决方案是实现perma login[永久登录]功能,或者每次用户销毁应用程序或从头启动应用程序时,检查是否有用户使用
FirebaseAuth
中的
getCurrentUser()
方法登录,如果有,则注销

TL;博士:

确保您的用户登录时间不超过24小时,如果有,请断开连接,然后重新连接。

正如我稍后所述,当我试图减少代码时,我找到了
setLogLevel
方法,该方法与
Level.DEBUG
一起使用,然后用于发现错误:

获取令牌时出错:用户的凭据不再有效。用户必须重新登录

在四处窥探之后,我发现,由于Firebase身份验证机制(授予用户一个令牌24小时,然后取消身份验证)导致无法访问服务器。
因此,解决方案是实现perma login[永久登录]功能,或者每次用户销毁应用程序或从头启动应用程序时,检查是否有用户使用
FirebaseAuth
中的
getCurrentUser()
方法登录,如果有,则注销

TL;博士:

确保用户登录时间不超过24小时,如果有,请断开连接,然后重新连接。

首先,即使不调用
updateChildren
,也应该运行
ValueEventListener
。其次,您是否检查了是否调用了
onCancelled
?对不起,我很难理解您看到的行为和您期望的行为。在运行代码之前,您是否可以将代码简化为并包含JSON(作为文本,无屏幕截图)?@TheSunshinator取消后的
不会被调用@FrankvanPuffelen我减少了代码,但我怀疑它会导致同样的问题\与您缺乏连接。请注意,我在尝试减少代码时发现了一个错误。实际上,
while
循环可以防止触发
ValueEventListener
。我有一个类似的问题,我有一个
while(true)if(isTriggered)break
似乎比
ValueEventListener更重,或者在处理器上的优先级更高,因此它从未被触发,我的程序冻结。您应该使用
接口
进行回调。首先,即使不调用
updateChildren
,也应该运行
ValueEventListener
。其次,您是否检查了是否调用了
onCancelled
?对不起,我很难理解您看到的行为和您期望的行为。在运行代码之前,您是否可以将代码简化为并包含JSON(作为文本,无屏幕截图)?@TheSunshinator取消后的
不会被调用@FrankvanPuffelen我减少了代码,但我怀疑它会导致同样的问题\与您缺乏连接。请注意,我在尝试减少代码时发现了一个错误。实际上,
while
循环可以防止触发
ValueEventListener
。我有一个类似的问题,我有一个
while(true)if(isTriggered)break
似乎比
ValueEventListener更重,或者在处理器上的优先级更高,因此它从未被触发,我的程序冻结。您应该使用
接口
进行回调。