android - query - ¿Necesitamos usar hilo de fondo para recuperar datos usando firebase?
recuperar datos firebase android (3)
Tengo una aplicación de Android donde estoy recuperando datos en un Fragmento. Y creo que Firebase gestiona sus llamadas asincrónicas. Pero todavía tengo dudas si necesitamos escribir el código de Firebase en el hilo de fondo o no ?.
Si necesitamos escribirlo en el hilo de fondo, ¿puede decirnos qué operaciones requieren más tiempo? p.ej:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog");
Creo que realizar esto en el subproceso principal de la interfaz de usuario puede ser un riesgo total, ya que establecer la conexión entre la base de datos puede llevar un tiempo considerable.
El cliente de Firebase Database realiza todas las operaciones de red y disco fuera del hilo principal.
El cliente de la base de datos de Firebase invoca todas las devoluciones de llamada a su código en el hilo principal.
De modo que el acceso a la red y al disco para la base de datos no es razón para activar sus propios hilos o usar tareas en segundo plano. Pero si realiza operaciones intensivas de disco, E / S de red o CPU en la devolución de llamada, es posible que deba realizarlas fuera del hilo principal.
Firebase ejecuta todas sus devoluciones de llamada de manera asíncrona como se documentó https://www.firebase.com/docs/android/guide/retrieving-data.html . Esto se hace a través de una capa de conexión web.
Si, por ejemplo, necesita hacer una gran cantidad de procesamiento de datos en el resultado de la actualización de datos de Firebase, probablemente debería girar una AsyncTask para evitar que la UI bloquee. Esto no es diferente de cómo normalmente abordaría el procesamiento de datos antes de presentarlo a la UI.
La documentación de Firebase cubre cómo se manejan los datos y la razón por la cual no necesita ejecutar ninguna lectura de fondo. Probablemente deberías pasar un tiempo leyendo la documentación.
Si está retirando una gran colección de datos de la base de datos y desea convertir todo eso en una colección de tipos de JavaBean, puede descargarla a otro subproceso, ya que el tamaño de los datos que su uso de la reflexión puede causar demasiado trabajo para el hilo principal. La única manera de saber esto con seguridad es compararlo usted mismo. En términos generales, obtienes 16 ms para hacer cosas en el hilo principal antes de comenzar a disminuir desde la velocidad de renderización óptima de 60 fotogramas por segundo.
Hace poco twitteé un diff sobre un proyecto mío en el que rediseñé un patrón para enviar el oyente de la base de datos a un ejecutor para el procesamiento en segundo plano. Sin embargo, es posible que su aplicación no requiera este tipo de complejidad. Sin embargo, fue bueno para mi aplicación. https://twitter.com/CodingDoug/status/773277680867258368