Utilice el marco de publicación / suscripción de eventos EventBus para implementar la entrega de eventos en Android

Escenas

EventBus

EventBus es un bus de publicación-suscripción de eventos para Android. Simplifica la complejidad de la comunicación entre varios componentes de la aplicación, especialmente el problema de la comunicación entre fragmentos, y puede evitar muchos inconvenientes provocados por el uso de la comunicación por radiodifusión.

Documento oficial

https://greenrobot.org/eventbus/documentation/

escenas que se utilizarán

Al realizar proyectos, a menudo es necesario comunicarse entre varios componentes de la aplicación y entre componentes y subprocesos en segundo plano. Por ejemplo, operaciones que requieren mucho tiempo. Una vez que se completan las operaciones que requieren mucho tiempo, los resultados se notifican a la interfaz de usuario a través de Handler o Broadcast. N Las actividades deben comunicarse a través de Listener. Otro ejemplo es el método de devolución de llamada que se presentará en este artículo para mostrar el mensaje en el método de devolución de llamada que recibe el empuje MQTT. En la barra de notificaciones del sistema, estos se pueden implementar fácilmente a través de EventBus. EventBus administra el bus de eventos a través de publicación / suscripción (publicación / suscripción).

Tres roles

Evento: Evento, puede ser de cualquier tipo, EventBus realizará una notificación global según el tipo de evento.
Suscriptor: Suscriptores de eventos. Antes de EventBus 3.0, debemos definir los métodos que comienzan con onEvent, que son onEvent, onEventMainThread, onEventBackgroundThread y onEventAsync. Después de 3.0, el nombre del método de procesamiento de eventos se puede tomar a voluntad, pero debe ser anotado. @subscribe, y especifique el modelo de hilo, el valor predeterminado es PUBLICAR.
Editor: el editor del evento, que puede publicar el evento en cualquier hilo. Generalmente, puede obtener un objeto EventBus utilizando EventBus.getDefault () y luego llamar al método post (Object).

Cuatro modelos de roscado

PUBLICACIÓN: De forma predeterminada, significa que el hilo de la función de procesamiento de eventos está en el mismo hilo que el hilo que publica el evento.
PRINCIPAL: indica que el subproceso de la función de procesamiento de eventos está en el subproceso principal (UI), por lo que aquí no se pueden realizar operaciones que consumen mucho tiempo.
ANTECEDENTES: Indica que el hilo de la función de procesamiento de eventos está en el hilo de fondo, por lo que no se pueden realizar operaciones de IU. Si el hilo que publica el evento es el hilo principal (hilo de IU), entonces la función de procesamiento de eventos iniciará un hilo en segundo plano. Si el hilo que publica el evento es un hilo en segundo plano, la función de procesamiento de eventos usa este hilo.
ASYNC: significa que no importa en qué hilo se publique el evento, la función de procesamiento de eventos siempre creará un nuevo hilo secundario para ejecutar, y las operaciones de la interfaz de usuario tampoco se pueden realizar.

Nota:

Blog:
https://blog.csdn.net/badao_liumang_qizhi
Siga la
cuenta pública
Programadores dominantes Obtenga libros electrónicos relacionados con la programación, instructivos y descargas gratuitas.

lograr

Documentación de inicio rápido proporcionada en el sitio web oficial

https://greenrobot.org/eventbus/documentation/how-to-get-started/

 

Aquí tomamos el método de devolución de llamada después de recibir el mensaje del servidor MQTT para pasarlo al hilo principal para mostrar el mensaje de notificación en la barra de notificaciones como ejemplo.

Los eventos adhesivos StickyEvents de EventBus también se utilizan aquí

StickyEvents

¿Qué es un evento pegajoso? En pocas palabras, puede recibir el evento suscribiéndose al evento después de enviarlo, similar a la transmisión permanente.

Documentos oficiales:

https://greenrobot.org/eventbus/documentation/configuration/sticky-events/

Traducción literal:

Algunos eventos llevarán información interesante después de que se publique el evento. Por ejemplo, un evento indica que se ha completado una determinada inicialización. O tiene algún sensor o datos de ubicación y desea mantener el valor más reciente. Puede usar eventos fijos en lugar de implementar su propio almacenamiento en caché. EventBus guarda el último evento fijo de un tipo específico en la memoria. Luego, los eventos fijos se pueden entregar a los suscriptores o consultas explícitas. Por lo tanto, no necesita ninguna lógica especial para considerar los datos que ya están disponibles.

Usar EventBus

Introduce dependencias en build.gradle

    //Event bus用来传递消息
    implementation 'org.greenrobot:eventbus:3.0.0'

Luego, siga las instrucciones de inicio rápido del documento oficial para crear una nueva entidad de evento de mensaje MessageEvent

public class MessageEvent {
    private String message;

    public MessageEvent(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

Luego registre el evento y procese el evento donde necesita suscribirse al evento, aquí es para mostrar el mensaje en la barra de notificaciones en MainActivity, por lo tanto en el método onCreate de MainActivity

        //在需要订阅事件的地方注册事件
        EventBus.getDefault().register(this);

Entonces necesitas manejar el evento en MainActivity

    //处理事件
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void showTheEventMessage(MessageEvent messageEvent) {
        Log.i(TAG, "showTheEventMessage: show notification");
        showNotification(this, messageEvent.getMessage());
    }

Es decir, se realiza la operación de mostrar el mensaje de la barra de notificaciones.

Luego, en el método de devolución de llamada para recibir el mensaje MQTT

EventBus.getDefault().postSticky(new MessageEvent(msg));

Publica un mensaje, donde msg es el contenido de la cadena del mensaje entregado.

El proceso de implementación completo anterior

Conéctese al servidor MQTT en Android para suscribirse a temas y recibir notificaciones push que se mostrarán en la barra de notificaciones (descarga de código adjunta):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112466469

 

 

 

Supongo que te gusta

Origin blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112476228
Recomendado
Clasificación