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.
- Variable de ajuste dentro de onDataChange en Firebase (singleValue Listener)
- Error de autenticación de Token Firebase
- habilitar Firebase Crash Reporting en Android
- Empezó a usar el nuevo sitio web de Firebase y estoy recibiendo este error al probar el programa de ejemplo de autenticación de Android
- ¿Las notificaciones no siempre se reciben por teléfono?
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);
- Obtener id token en la aplicación de Android y verificarlo en el servidor de back-end (¿Cómo usar id token?)
- No se puede ver el resultado del parámetro de campaña personalizado de Firebase Dynamic Link en Google Analytics
- Android: ¿Los símbolos de autenticación de usuario Firebase expiran?
- Firebase - Tratando de recuperar datos de cada usuario en una lista
- Indexación de aplicaciones de Android -> FirebaseAppIndexingInvalidArgumentException
- Agregar más información de usuario con firebase
- Esperaba un mapa mientras se deserializaba, pero obtuvo una clase java.lang.Long
- Clasificación de la posición de los elementos mediante FirebaseRecyclerAdapter
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 mostrar la imagen externa en android?
- ¿Cómo agregar dinámicamente preferencias en la pantalla de preferencias y enlazar sus valores?