¿Habla sobre tu comprensión de la radiodifusión?
Bajo acoplamiento y alta cohesión: si dos componentes necesitan comunicarse, pueden obtener instancias entre ellos, pero este método sin duda aumenta el acoplamiento, lo cual no es bueno. Al utilizar transmisiones, pueden obtener los datos deseados sin obtener la instancia de la otra parte y, por supuesto, existe un mecanismo de bus de eventos más conveniente. Aquí hay sólo un ejemplo. Puede usarse no solo para la comunicación entre componentes, sino también para la comunicación entre procesos, mantenimiento de programas, etc.
A. Transmisión ordenada
B. Transmisión desordenada
C. Transmisión fija
F. Transmisión del sistema
Primero, necesita un receptor de transmisión.
Entonces regístrate para la transmisión. El registro se puede dividir en registro estático y registro dinámico:
1. Registro dinámico:
Lo que se debe tener en cuenta aquí es desvincular la transmisión antes de que se destruya el programa para evitar pérdidas de memoria.
2. Registro estático:
El registro estático se completa en xml.
Finalmente, envía una transmisión:
Aquí es necesario explicar la transmisión local. Otras transmisiones pueden ser interceptadas o atacadas y la seguridad no es muy alta, por lo que se generan transmisiones locales. Este mecanismo sólo puede recibir transmisiones dentro de la aplicación, por lo que no hay intercepción ni ataque.
La transmisión retransmitida se mantiene sin cambios.
Las transmisiones no envían mensajes a aplicaciones detenidas.
B. Android 7.0 bloquea algunos eventos de transmisión, como: los programas en segundo plano no pueden monitorear el estado de la red, no se permite el registro estático, las aplicaciones no se pueden activar maliciosamente y no hay disciplina.
C. Algunas roms de terceros (como MUI/EMUI) también restringen algunos eventos de transmisión. Por ejemplo, Huawei EMUI debe configurarse para permitir que el programa actual se inicie antes de escuchar BOOT_COMPLETED.
El método d.onReceiver() no debe realizar operaciones que requieran mucho tiempo. Las operaciones que requieren mucho tiempo se pueden colocar en componentes de servicio.
E.LocalBroadcastManager no será secuestrado por la aplicación para transmitir información, solo aparecerá BroadcastManager, por lo que si no es un proceso cruzado, LocalBroadcastManager puede reemplazar completamente a Broadcastreceive.
Se implementa mediante binder. No lo sé todavía, pero seguiré investigándolo en el futuro.
1. ¿Cuál se recibe primero, transmisión estática o transmisión dinámica?
Respuesta: La prioridad dinámica es estática. Por motivos específicos, puede consultar el código fuente del servicio ActivityManager (.../SDK/Sources/Android-XX/com/Android/Server/AM/activity manager Service.Java) y puede seguir sendBroadcast paso a paso. paso. Finalmente, encontrará que primero se atraviesan las transmisiones dinámicas y luego las transmisiones estáticas, por lo que las transmisiones dinámicas tienen prioridad sobre las transmisiones estáticas.