Firebase Android – cómo saber si se ha sincronizado el nodo

Estoy utilizando Firebase para Android para el componente de chat de nuestra aplicación. Tengo problemas para averiguar cómo implementar de forma fiable actualizaciones de estado en cada mensaje de chat. Por ejemplo, mostrar "Enviar .." cuando el chat se está sincronizando con el servidor, y tener una retroalimentación de éxito después de la sincronización.

Tengo un oyente de onChildAdded que suministra los mensajes a mi adaptador. Sin embargo, este oyente se activa inmediatamente cuando cada nodo se agrega localmente y no puedo comprobar el estado de cada nodo

Mi solución actual es mantener un conjunto de claves de nodo, y agregar claves cada vez que empujo algo a Firebase. A continuación, en la devolución de llamada setValue, elimino la clave de nodo del conjunto. Sin embargo, esto es muy poco fiable ya que los nodos se pueden sincronizar cuando se ha destruido la actividad de llamada, etc.

¿Me pregunto si hay una manera más simple de comprobar si cada nodo se ha sincronizado con el servidor?

¡Gracias!

De la documentación de Firebase sobre la escritura de datos :

Si desea saber cuándo los datos se han confirmado, puede agregar un oyente de finalización. Ambos setValue () y updateChildren () toman un oyente de terminación opcional que se llama cuando la escritura se ha confirmado en la base de datos.

Con este práctico ejemplo de código:

ref.setValue("I'm writing data", new Firebase.CompletionListener() { @Override public void onComplete(FirebaseError firebaseError, Firebase firebase) { if (firebaseError != null) { System.out.println("Data could not be saved. " + firebaseError.getMessage()); } else { System.out.println("Data saved successfully."); } } }); 
  • Recuperar ServerValue.Timestamp de Firebase en la aplicación de Android, cuando se envían los datos
  • Android Firebase - No se puede recibir correctamente JSON de la instantánea de Firebase
  • ¿No encontró la clase "com.google.firebase.provider.FirebaseInitProvider"?
  • Firebase trabajando sin permission.INTERNET ... ¿Cómo?
  • Error al cargar la clase del descriptor del módulo: No encontró la clase "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
  • Problemas al actualizar la nueva versión 10.2.0 de PlayServices y Firebase
  • Espere los datos async retrive de Firebase en android
  • El detector de eventos de valor único de Firebase no devuelve
  • Error de generación de token Google Cloud Messaging (GCM) después de la actualización de Google Play Services relacionada con Firebase
  • Error de Firebase debido a una excepción de puntero nulo
  • Fire base no llama onCancelled si el tiempo de espera o no puede acceder al servidor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.