Guia do EventBus da Guava

Guia do EventBus da Guava

1. Visão geral

A biblioteca Guava forneceEventBus, que permite a comunicação de publicação-assinatura entre componentes. Neste tutorial, veremos como usar alguns dos recursos doEventBus.

2. Configuração

Para começar, adicionamos a dependência da biblioteca Google Guava nopom.xml:


    com.google.guava
    guava
    21.0

A versão mais recente pode ser encontradahere.

3. Usando oEventBus

Vamos começar usando um exemplo simples.

3.1. Configuração

Começamos olhando para o objetoEventBus. Ele pode registrar ouvintes e publicar eventos. Usá-lo é tão simples quanto instanciar a classe:

EventBus eventBus = new EventBus();

A biblioteca Guava lhe dá a liberdade de usarEventBus da maneira que melhor se adapta às suas necessidades de desenvolvimento.

3.2. Criando Ouvintes

Criamos uma classe de ouvinte que possui métodos manipuladores para receber eventos específicos. Anotamos os métodos do manipulador com@Subscribe. O método aceita como argumento um objeto do mesmo tipo que o evento que está sendo lançado:

public class EventListener {

    private static int eventsHandled;

    @Subscribe
    public void stringEvent(String event) {
        eventsHandled++;
    }
}

3.3. Registrando Ouvintes

Podemos nos inscrever em um evento registrando nossa classeEventListener noEventBus:

EventListener listener = new EventListener();
eventBus.register(listener);

3.4. Cancelando o registro de ouvintes

Se por algum motivo quisermos cancelar o registro de uma classe deEventBus, isso também pode ser feito facilmente:

eventBus.unregister(listener);

3.5. Publicação de eventos

Podemos postar eventos também com oEventBus:

@Test
public void givenStringEvent_whenEventHandled_thenSuccess() {
    eventBus.post("String Event");
    assertEquals(1, listener.getEventsHandled());
}

3.6. Publicação de eventos personalizados

Também podemos especificar uma classe de evento personalizada e postar esse evento. Começamos criando um evento personalizado:

public class CustomEvent {
    private String action;

    // standard getters/setters and constructors
}

Adicionando um método manipulador na classeEventListener para esse evento:

@Subscribe
public void someCustomEvent(CustomEvent customEvent) {
    eventsHandled++;
}

Agora podemos publicar nosso evento personalizado:

@Test
public void givenCustomEvent_whenEventHandled_thenSuccess() {
    CustomEvent customEvent = new CustomEvent("Custom Event");
    eventBus.post(customEvent);

    assertEquals(1, listener.getEventsHandled());
}

3.7. Lidando com um eventoUnsubscribed

Temos uma classeDeadEvent que nos permite manipular qualquer evento que não tenha ouvintes. Podemos adicionar um método para lidar com a classeDeadEvent:

@Subscribe
public void handleDeadEvent(DeadEvent deadEvent) {
    eventsHandled++;
}

4. Conclusão

Neste tutorial, usamos um exemplo simples como um guia sobre como usar o GuavaEventBus.

Você pode encontrar o código-fonte completo e todos os trechos de código deste artigoover on GitHub.