Tutorial para Android: aprende a usar el patrón EventBus | Michael Ganchas | Octubre de 2020

Imagen de https://www.manypixels.co/gallery/

¡Hola a todos!

Hoy me gustaría compartir con ustedes cómo podemos usar el patrón EventBus, un subconjunto Publicar – Suscribirse patrón, para la comunicación separada entre diferentes componentes.

Este patrón puede ser un buen enfoque si desea enviar (publicar) y recibir y responder a datos de ComponentA (pagar por adelantado) del componente B.

La mejor analogía que se me ocurrió para este wacon una máquina expendedora de boletos que le da un número de boleto, después de haber pedido esta deliciosa comida en un restaurante de una cadena de comida rápida local, y luego muestra en la pantalla el titular del número de boleto al que puede ir a recoger la comida.

Usaremos Kotlin para este tutorial.

Crearemos tres componentes diferentes para este ejercicio, cada uno con su propia responsabilidad:

  • Maquina de boletos: Responsable de darte su número de ticket después de pedir comida y por informar a alguien Quien esté interesado (o nadie) sepa que hay un nuevo orden.
  • TicketScreen: Responsable de la información que pueda recoger el titular del número de billete.
  • HappyCustomer A y B.: Clientes que piden comida. Recibirá un número de boleto único de TicketMachine y espere a que TicketScreen envíe su número de ticket.

Usaremos esta framework para su implementación en Android. Agregue la siguiente línea a su app / build.gradle expediente:

Para la publicación y las suscripciones, la interfaz utiliza el tipo de objeto para separar lo que se publica y a quién debe entregarse. Empecemos por definir nuestros modelos.

Comida:

Cuando un nuevo cliente selecciona el tipo de comida deseado, solo conoce el nombre de la hamburguesa que ha elegido, por lo que la posible implementación será la siguiente clase de datos:

Comida detallada:

Luego de recibir los detalles de la comida, TicketMachine se encargará de asignar un número de ticket único, creando así el siguiente tipo:

Comida lista:

Una vez que la comida esté lista y lista para la entrega, TicketScreen deberá informar al titular del número de boleto que puede ir a buscar su delicioso almuerzo. Por razones analíticas internas, necesitaremos registrarnos para la entrega de cada comida, por lo que nuestro objetivo puede ser el siguiente:

Para simplificar, cada cliente tiene un botón único que se inicia ordenando comida intención. TicketMachine y TicketScreen un hijo único asignaturascuyos oyentes comienzan / detienen están conectados a actividades ciclo vital.

Actividad principal

Hemos agregado acciones de pedido para cada cliente disponible. Ahora debemos registrarnos para comenzar a prestar atención a cualquier evento que nos pueda interesar y cancelar el registro cuando estemos fuera del negocio. Al mismo tiempo, digamos a TicketMachine y TicketScreen si comienzan a funcionar o no:

Todo lo que queda es decir que necesitamos saber cuándo está lista la comida:

Nota: Estamos suscribiendo Hilo principal porque te mostraremos brindisque se procesa en él.

Nota 2: Más información sobre la interpolación de cadenas aquí.

Maquina de boletos

Él tiene propiedad con el número de ticket actual y se encarga de generar otro.

Además, necesita saber cuándo se ordenó la nueva comida y adjuntar su número de boleto único y la hora en que se imprimió.

Nota: Dado que no es necesario procesar ninguna parte de la interfaz de usuario, pagar por adelantado anotación está en el estado predeterminado.

TicketScreen

Para este ejercicio usaremos y Contador regresivo simule el momento en que debe completarse la comida. Usaremos uno simple para registrar nuestros pedidos. Lista de enlacescual es el tipo Frenteasí es FIFO (primero en entrar primero en salir).

Entonces, ahora tenemos que decir que queremos saber cuándo se asoció la comida con el número de boleto para poder comenzar a cocinar.

Entonces solo queda decir que la próxima comida en la cola está lista para que el cliente adecuado pueda venir a recogerla.

Eso es todo por hoy. ¡Si lo desea, puede hacer cualquier pregunta o agregar sugerencias!

¡Salud!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *