有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向Firebase写入数据只能在刚刚登录后才能工作,除非注销并再次登录,否则无法成功工作

我正在安卓上向Firebase写入数据。在用户刚刚成功登录后,编写过程可以很好地工作。我可以看到数据已经在我的控制台上更新,CompletionListener也相应地被触发。然而,在同一用户保持登录状态的情况下,应用程序多次执行写入操作后,除非该用户注销并再次登录,否则它将无法工作。我无法在控制台上查看数据,也无法在应用程序中触发CompletionListener。 以下是我的写作过程代码:

new Thread(new Runnable(){

        public void run(){
            for(int  i = 0 ; i < dataBufferList.size();++i){


                myRef.push().setValue(dataBufferList.get(i), new DatabaseReference.CompletionListener() {
                    @Override
                    public void onComplete(DatabaseError databaseError, DatabaseReference dataRef) {

                        if (databaseError != null) {
                            System.out.println("Data saved : error " + databaseError.getMessage());
                        } else {
                            System.out.println("Data saved successfully.");
                        }
                    }
                });



            }
            dataBufferList.clear();
        }
    }).start();

每次遇到问题时,我都会收到一条日志消息:

W/DynamiteModule:com的本地模块描述符类。谷歌。火力基地。找不到身份验证

然而,我总是打电话 FirebaseUser currentUser=mAuth。getCurrentUser() 在我开始在Firebase上写之前,它总是返回正确的当前用户

此外,我希望我的应用程序在登录后保持登录状态,这样我就不必每次打开应用程序时都登录。以下是实现这一点的代码:

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser != null) {
        Log.d(LOGTAG,"onStart : current user :" + currentUser.getDisplayName());
    }
    else {
        Log.d(LOGTAG,"onStart : current user : null");
    }
    currentUserName = currentUser.getDisplayName();

}

我是不是错过了什么台阶


共 (0) 个答案