Ich habe eine Anwendung mit Google Maps und Firebase-Datenbank entwickelt. Bei einem langen Druck auf die Karte speichere ich LatLng in der Firebase DB; Firebase onChildAdded() Event nicht ausgelöst manchmal/nach Leerlaufzeit
// code to save latlng to DB
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
mDatabaseReference.push().setValue(latLng);
}
});
Dies führt zu einer Firebase Trigger zu informieren, dass ein Kind Ereignis durch onChildAdded hinzugefügt wurde().
if (mChildEventListener == null) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String key = dataSnapshot.getKey();
Log.i(TAG, "onChildAdded " + s + " @ " + key);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
String key = dataSnapshot.getKey();
Log.i(TAG, "onChildChanged " + s + " @ " + dataSnapshot.getKey());
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
String key = dataSnapshot.getKey();
Log.i(TAG, "onChildRemoved " + dataSnapshot.getKey());
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
String key = dataSnapshot.getKey();
Log.i(TAG, "onChildMoved " + s + " @ " + key);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(TAG, "onCancelled " + databaseError.getDetails());
}
};
mDatabaseReference.addChildEventListener(mChildEventListener);
}
Alle beabsichtigten Code funktioniert gut. Ich habe jedoch festgestellt, dass die Child-Listener-Ereignisse (onChildAdded, onChildChanged usw.) nach einiger Leerlaufzeit nicht von der App empfangen werden. Wenn Sie lange auf die Karte drücken, werden die Koordinaten in der Firebase DB gespeichert, die ich über die Konsole überwache. Hat jemand solch ein Problem konfrontiert? Fehle ich etwas?
Ich habe derzeit öffentlichen Zugang zur DB für den ursprünglichen Dev-Zweck gewährt. – Sameer