Firebase addValueEventListener funktioniert nur für ein paar Stunden
Hat jemand dieses Problem erlebt? Mein Firebase-Code funktioniert im Grunde genommen nur ein paar Stunden (voll funktionsfähig und alles), und wenn ich es dann erneut versuche, funktioniert er nicht mehr. Im folgenden Code sehen Sie, wie ich es anrufe:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.e(TAG, "onDataChange: Job found");
for (DataSnapshot jobSnapShot : dataSnapshot.getChildren()) {
Log.e(TAG, "onDataChange: Job +1");
Job job = jobSnapShot.getValue(Job.class);
// Add the ID into the job
job.setId(dataSnapshot.getKey());
// Set the job
arrayList.add(job);
subscriber.onNext(job);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled: " + databaseError.getMessage());
}
};
Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString());
Log.e(TAG, "call: Calling Jobs...");
FirebaseDatabase.getInstance()
.getReference()
.child(context.getString(R.string.firebase_jobs))
.child(userId).
addValueEventListener(valueEventListener);
Die Linien
Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString());
Log.e(TAG, "call: Calling Jobs...");
Jedes Mal ausführen. UserId und getReference geben korrekte Werte zurück. Der addValueEventListener fügt den Listener jedoch offenbar erst einige Stunden später hinzu. Die einzige Möglichkeit, dies zu beheben, besteht darin, sich ab- und wieder anzumelden.
BEARBEITEN
Mein Authentifizierungsstatus-Listener-Code:
firebaseAccount = getFirebaseAccount();
firebaseAccount.getAuth().addAuthStateListener(firebaseAccount.getAuthListener());
In firebaseAccount:
public FirebaseAuth.AuthStateListener getAuthListener() {
return authStateListener;
}
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
String id = firebaseUser.getUid();
// User is signed in
Log.e(TAG, "onAuthStateChanged: Signed in as " + id);
// Start loginActivity when signed in
loginActivity.onLoginSuccess(id);
} else {
// User is not signed in
Log.e(TAG, "onAuthStateChanged: Signed out");
// User probably logged out. Finish the loginActivity and launch the login screen
}
}
};