Ich schreibe eine Android-Anwendung mit Firebase Api 9. +.Firebase onDataChange nicht aufgerufen, Anwendung nach einiger Zeit zu öffnen
Ich benutze Firebase-Authentifizierung und Datenbank.
Wenn ich auf meine App zugreife und mich anmelde, ist alles in Ordnung und die Daten werden vom valueEventListeners korrekt abgerufen.
Mein Problem beginnt, wenn ich meine app nach einiger Zeit zugreifen und es ist bereits angemeldet.
Authentifizierung zu bestätigen scheint, aber keiner meiner Zuhörer ausgelöst und nichts scheint abgerufen zu werden.
Damit meine Anwendung wieder funktioniert, muss ich mich abmelden und erneut anmelden.
Ich weiß nicht, ob es ein "Sitzung abgelaufen" Problem ist oder etwas, das ich vergessen habe, in meinen Code zu schreiben.
Dies ist einer meiner valueEventListeners:
DatabaseReference myFirebase = FirebaseDatabase.getInstance().getReference();
hairDresserFirebase = myFirebase.getReference("hairDressers");
hairDresserFirebase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
HairDresser hd = snapshot.getValue(HairDresser.class);
if (hairDresserList.contains(hd)) hairDresserList.remove(hd);
hairDresserList.add(hd);
}
mRecyclerView.getAdapter().notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
Die anderen nur für die Referenz ändern.
Sie sind alle in OnCreateView() -Methode von verschiedenen Fragmenten.
Dies ist der Code int der onCreate() -Methode meiner splash Aktivität ausgeführt, um zu überprüfen, wenn der Benutzer bereits angemeldet ist:
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user == null) return;
authenticated = true;
}
};
Während mein log in Tätigkeit nur dann eingeleitet, wenn der Benutzer nicht angemeldet ist und Führt das vollständige richtige Verfahren aus, um sich mit E-Mail und Passwort oder mit Facebook anzumelden, und es funktioniert einwandfrei.
Ich habe nichts gefunden, um dieses Problem zu lösen. Ich möchte meine Benutzer nicht zwingen, sich jedes Mal, wenn sie meine Anwendung öffnen, erneut zu authentifizieren.
Bitte helfen Sie mir :)
** 1. ** Können Sie bitte die Verlangsamung der ** myFirebase ** Referenz hinzufügen? ** 2. ** Haben Sie die Anwendung debuggt? Sie sind sicher, dass ** onDataChange ** und ** onCancelled ** nicht aufgerufen wurden? Ich empfehle, Log-Ausdruck in jeder Methode und in jeder * if * -Anweisung hinzuzufügen, um genau zu sehen, was aufgerufen wurde und was nicht. –
1. Ich habe die Deklaration hinzugefügt. 2. Ja, ich habe Logs überall mehr als einmal hinzugefügt und nichts wurde gedruckt. –
Ich habe das gleiche Problem mit der E-Mail/Passwort-Authentifizierung mit Firebase: 9.0.2. – Blodhgard