Panduan untuk EventBus Jambu Batu

1. Gambaran keseluruhan

Perpustakaan jambu menyediakan EventBus yang membolehkan komunikasi penerbitan-langganan antara komponen. Dalam tutorial ini, kita akan melihat bagaimana menggunakan beberapa ciri EventBus .

2. Persediaan

Untuk memulakan, kami menambahkan kebergantungan perpustakaan Jambu Batu di pom.xml:

 com.google.guava guava 29.0-jre 
Versi terbaru boleh didapati di sini.

3. Menggunakan EventBus

Mari mulakan dengan menggunakan contoh mudah.

3.1. Persediaan

Kita mulakan dengan melihat objek EventBus . Ia dapat mendaftarkan pendengar dan menyiarkan acara. Menggunakannya semudah memberi contoh kelas:

EventBus eventBus = new EventBus();

Perpustakaan jambu memberi anda kebebasan menggunakan EventBus dengan cara yang paling sesuai dengan keperluan pembangunan anda.

3.2. Membuat Pendengar

Kami membuat kelas pendengar yang mempunyai kaedah pengendali untuk menerima acara tertentu. Kami memberi penjelasan mengenai kaedah pengendali dengan @Subscribe . Kaedah ini menerima sebagai argumen objek dengan jenis yang sama dengan acara yang disiarkan:
public class EventListener { private static int eventsHandled; @Subscribe public void stringEvent(String event) { eventsHandled++; } }

3.3. Mendaftar Pendengar

Kami boleh melanggan acara dengan mendaftarkan kelas EventListener kami di EventBus :
EventListener listener = new EventListener(); eventBus.register(listener);

3.4. Tidak Mendaftar Pendengar

Sekiranya atas sebab apa pun kami ingin membatalkan pendaftaran kelas dari EventBus , itu juga dapat dilakukan dengan mudah:

eventBus.unregister(listener);

3.5. Menyiarkan Acara

Kami boleh menyiarkan acara juga dengan EventBus :
@Test public void givenStringEvent_whenEventHandled_thenSuccess() { eventBus.post("String Event"); assertEquals(1, listener.getEventsHandled()); }

3.6. Menyiarkan Acara Tersuai

Kami juga dapat menentukan kelas acara khusus dan memposting acara itu. Kami mulakan dengan membuat acara khusus:
public class CustomEvent { private String action; // standard getters/setters and constructors }

Menambah kaedah pengendali dalam kelas EventListener untuk acara itu:

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

Kami kini boleh menghantar acara khas kami:

@Test public void givenCustomEvent_whenEventHandled_thenSuccess() { CustomEvent customEvent = new CustomEvent("Custom Event"); eventBus.post(customEvent); assertEquals(1, listener.getEventsHandled()); }

3.7. Mengendalikan Acara yang Tidak Dilanggan

Kami dibekalkan dengan kelas DeadEvent yang membolehkan kami mengendalikan sebarang acara yang tidak mempunyai pendengar. Kita boleh menambahkan kaedah untuk mengendalikan kelas DeadEvent :

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

4. Kesimpulan

Dalam tutorial ini, kami menggunakan contoh mudah sebagai panduan bagaimana menggunakan Guava EventBus .

Anda boleh mendapatkan kod sumber lengkap dan semua coretan kod untuk artikel ini di GitHub.