Firebase Android: onDataChange () evento siempre ejecutado en el hilo principal de la interfaz de usuario?
En una aplicación de Android que utiliza Firebase, necesito ejecutar operaciones largas en segundo plano una vez que Firebase devuelve una respuesta de consulta. P.ej:
query.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot data) { dosomething very long. . . then call a callback forUI thread }
Sé que firebase ejecutar la consulta en modo asíncrono, pero el método onDataChange()
parece ser siempre ejecutado en la interfaz de usuario principal Thread, incluso si intento llamar a la consulta en un hilo de fondo personalizado.
- ¿Cómo puedo solucionar el error de Android Firebase "Default FirebaseApp no se inicializa en este proceso"?
- Android: Firebase toma demasiado tiempo para buscar datos
- ¿Cómo recuperar elementos distintos de la base de datos de Firebase?
- ¿Cuál es la diferencia entre las interfaces ChildEventListener y ValueEventListener Firebase?
- Pasa varios parámetros a través de Firebase Enlaces dinámicos Android
¿Alguien sabe cómo manejar este caso de uso?
- Obtención de excepción java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions después de actualizar a la nueva firebase
- Aplicación de Firebase Indexación de privacidad y datos recopilados
- Firebase onMessageReceived no llamado cuando la aplicación está en segundo plano
- Firebase Crash informe de correo electrónico
- Cómo manejar la notificación cuando la aplicación en segundo plano en Firebase
- Paginación de Firebase android
- Llamar a getInstance () de Firebase Analytic cada vez contra la instancia de almacenamiento como una variable estática en la clase Application
- No se pudo resolver: com.google.firebase: firebase-database: 10.2.0
Las devoluciones de llamada para sus oyentes de Firebase se ejecutan de hecho en el subproceso de interfaz de usuario principal.
Si necesita hacer operaciones pesadas en una devolución de llamada, gire un AsyncTask
y haga el trabajo allí. El método AsyncTask.doInBackground()
se ejecuta en un subproceso diferente, por lo que no bloqueará la interfaz de usuario de Android. Pero AsyncTask. onPostExecute()
AsyncTask. onPostExecute()
ejecuta en el hilo principal de nuevo, por lo que puede actualizar sus vistas de interfaz de usuario desde allí.