En mis proyectos estoy usando BroadcastReceiver
s como una devolución de llamada de un hilo de larga ejecución (por ejemplo, notificar a la actividad que se terminó una descarga y enviar algunos datos de respuesta de un Trabajador Thread
para que la actividad pueda mostrar el mensaje apropiado para el usuario ..). Para usar BroadcastReceiver
s Tengo que tener cuidado de registrar y anular el registro del receptor de difusión cada vez que lo estoy usando y también tener que importar qué mensajes enviar esspecialy cuando estoy usando este método para más acciones diferentes (como descargar, hacer WebService llamadas, etc.). Y también para enviar objetos personalizados a través de la intención de Broadcast también necesito hacer los objetos Parcelable
.Android BroadcastReceiver o método simple de devolución de llamada?
A diferencia de este enfoque, también he visto el enfoque de los métodos de devolución de llamada que parece ser más simple que el método que uso. Los métodos de devolución de llamada son simples Implementación de métodos de interfaz que se pueden usar para lograr el mismo efecto, como los mensajes de aplicación de BroadcastRecaiver. Este enfoque no necesita implementación Parcelable para devolver objetos complejos y no usa claves como BroadcastReceiver
... Creo que la parte mala es que necesito verificar el valor nulo del objeto de devolución de llamada antes de querer llamar a un método de devolución de llamada. y también para asegurarme de que estoy ejecutando el código de la implementación en el hilo de la interfaz de usuario para que pueda actualizar la interfaz de usuario sin errores.
Ok, espero que hayan entendido lo que quise decir :).
Ahora la pregunta es, ¿cree que el método de devolución de llamada es mejor (más ligero, más limpio, más rápido ...) que el enfoque BroadcastReceiver
cuando se utiliza solo dentro de una sola aplicación? (Tenga en cuenta que no estoy usando Android Service
para trabajos de fondo ... solo AsyncTask
y Thread
s)
¡Gracias!
He otorgado esto como una respuesta y le doy la recompensa porque es la respuesta más completa ... ¡Gracias a todos por sus ideas! – Cata
Excelente respuesta. Soy un fanático del patrón de devolución de llamada/interfaz, pero a menudo heredo proyectos con un amplio uso del patrón de intención de transmisión y a menudo me pregunto si estoy yendo por el camino equivocado al respecto. Es bueno escuchar que realmente es una cuestión de preferencia de diseño en lugar de la mejor práctica. Me gusta la seguridad de tipo y la claridad de código ofrecida por las interfaces y probablemente me apegue a ellas por ahora –
opinión muy interesante y detallada +1 – Jorgesys