firestore enable android caching firebase firebase-database

android - enable - Firebase no sincroniza la memoria caché sin conexión si la aplicación es asesinada



firestore enable persistence (1)

De acuerdo con la documentación de firebase

Las transacciones no se conservan en los reinicios de la aplicación

Incluso con la persistencia habilitada, las transacciones no se mantienen durante los reinicios de la aplicación. Por lo tanto, no puede confiar en que las transacciones realizadas fuera de línea se comprometan con su base de datos de Firebase Realtime. Para proporcionar la mejor experiencia de usuario, su aplicación debe mostrar que aún no se ha guardado una transacción en su base de datos de Firebase Realtime, o asegurarse de que su aplicación las recuerde manualmente y las vuelva a ejecutar luego de reiniciar la aplicación.

Estoy estableciendo la persistencia fuera de línea

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

como se describe en una publicación anterior , pero el siguiente caso de uso falla:

  1. Desactiva la conectividad de Internet en el auricular
  2. Intentar escribir en la base de datos
  3. Elimina la aplicación de la memoria utilizando el menú multitarea de los usuarios en el sistema operativo
  4. Volver a conectar la conectividad a Internet
  5. Relanzar la aplicación. En este punto, espero que el nuevo registro del paso 2 se envíe a la base de datos a través de la conectividad de red restaurada, pero esto no sucede. (¿Son mis expectativas correctas?)

Código de muestra:

static{ FirebaseDatabase.getInstance().setPersistenceEnabled(true); } void updateValue(){ DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("mydb"); dbRef.keepSynced(true); dbRef.setValue("123"); }

Tenga en cuenta que, si no elimino la aplicación de la memoria, el almacenamiento en caché funciona:

  1. Desactiva la conectividad de Internet en el auricular
  2. Intentar escribir en la base de datos
  3. Volver a conectar la conectividad a Internet
  4. El nuevo registro se envía al DB una vez que se restablece la conectividad de la red.