Android – Firebase Offline Mejores Prácticas

Estoy atascado en la comprensión del concepto de hacer Firebase App Offline. Según la documentación, necesitamos llamar a:

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

¿Pero dónde deberíamos llamar esto? ¿Se debe utilizar en cada actividad de la solicitud? Porque, cuando estoy usando esto dentro de mi clase de aplicación onCreate () método, mi aplicación se bloquea continuamente.

Entonces, cuál es la mejor práctica que debemos seguir para que nuestra aplicación no esté conectada.

Una duda más es la diferencia entre el anterior y DatabaseReference.keppSynced(true);

setPersistenceEnabled debe llamarse una vez en el inicio, antes de recuperar su primera referencia de la base de datos. Llamo al mío directamente después de llamar a FIRApp.configure ().

La persistencia permitida permite la retención offline completa de la información. El componente importante de esto es que las solicitudes y las actualizaciones sin conexión se completarán, incluso si se obliga a cerrar la aplicación y reabrirla. Si está buscando acceso sin conexión, es el valor booleano que debe establecer.

Mantener sincronización se utiliza para si las circunstancias en las que desea actualizar los datos almacenados en caché para cada vez que recupere la información, pero no necesariamente necesitan que los datos que se restaurarán al abrir la aplicación.

Un buen ejemplo de uso sería si tuviera vistas que accedieran a los detalles de usuario registrados. En lugar de tener los oyentes de detalle del usuario en todas las vistas que utilizan los detalles, sólo puede especificar para mantener la base de datos de referencia sincronizada y puede obtener datos actualizados más rápido.

Más detalles sobre la persistencia y la sincronización se pueden leer aquí en la documentación de Firebase: https://firebase.google.com/docs/database/android/offline-capabilities

Crear una clase de aplicación

 public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); FirebaseDatabase.getInstance().setPersistenceEnabled(true); } } 

Y cambia tu manifiesto como

 <application android:name=".MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" 

Tomado de aquí

No estoy seguro, si es relevante aquí. Pero hay otro escenario cuando este accidente puede suceder.

Si su aplicación tiene un servicio (con un proceso diferente) y está creando su propia clase de aplicación, el servicio y la aplicación de primer plano utilizarán la misma clase de aplicación (no la misma instancia) para inicializar. Ahora, cuando estoy usando com.google.firebase: firebase-crash dependencia para manejar los accidentes, crea un servicio de fondo your.app.packagename: background_crash. Por alguna razón, esto estaba provocando accidentes en mi aplicación. Específicamente, porque en mi clase de aplicación, estaba haciendo una llamada como,

 FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

Estoy asumiendo, el servicio de fondo cuando initing con nuestra clase de aplicación, de alguna manera Firebase no se inicializa. Para arreglar esto, lo hice

 if (!FirebaseApp.getApps(this).isEmpty()) FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
  • Cómo capturar una Firebase Auth excepciones específicas
  • Soporte de seguimiento de pantalla - Firebase 9.8
  • Android - Firebase - ¿Necesito eliminar CADA oyente?
  • Firebase - Elimina un grupo de dispositivos sin conocer los ID de registro de sus miembros
  • ¿Cómo usar firebase con ViewPager y FragmentPagerAdapter?
  • ¿Cómo puedo enviar una notificación de Firebase Cloud Messaging sin utilizar Firebase Console?
  • Datos de consulta de Firebase
  • ¿Cómo enviar correo electrónico de verificación con Firebase?
  • ¿Cómo dar acceso diferente a diferentes tipos de usuarios para iniciar sesión en Firebase?
  • ¿Cómo hacer una búsqueda simple en cadena en la base de datos Firebase?
  • ANR con FCM y construir variantes con applicationIdSuffix
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.