Я пишу данные в Firebase на Android.Процесс записи может хорошо работать после того, как пользователь только что успешно вошел в систему.Я вижу, что данные были обновлены на моей консоли, и 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: Local moduleКласс дескриптора для com.google.firebase.auth не найден.
Однако я всегда вызываю 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();
}
Я что-то пропустил здесь?