Event Bus Patern Android dengan RxJava
Event bus adalah pola development dengan mengirimkan sebuah event ke subscriber. Pola development ini digunakan ketika aplikasi kita menggunakan banyak thread dan membutuhkan komunikasi antar component.
Contoh kasus penggunaan event bus adalah seperti ketika kita ingin merubah badge notifikasi dari sebuah service. Dengan cara yang biasa maka kita akan membuat broadcast receiver dan membuat register callback di UI nya cara ini tidak salah tapi jika ini hanya 1 komponen saja bayangkan ada belasan atau puluhan komponen maka akan bikin pusing manage-nya. Atau mengubah sebuah fragment dari komponen lain.
Dulu sebelum ada Rxjava kita biasa pakai library seperti Otto, EventBus, startActivityForResult Intent dll. Rxjava dengan patern observable yang powerfull membuat library event bus yang dulu umum dipakai menjadi tersingkir.
Saya akan memberikan contoh sederhana saja pada tutorial kali ini yaitu ketika ada notifikasi baru untuk merubah badge icon notifikasi sesuai dengan nilai yang dikirimkan oleh server melalui payload servis fcm. Pertama-tama kita buat rxbus-nya
Kemudian buat object class object sebagai object payload event yang dikirim pada contoh kali ini adalah semisal notifikasi.
Kita handle payload notifikasi dari fcm service-nya. Selanjutnya kita publish event dari service fcm sesuai dengan payload yang dikirim dari server.
Kemudian buat listener di activity-nya untuk dan jangan lupa untuk dispose di onDestroy ini sangat penting supaya nanti tidak terkena NPE.
Bagaimana, simple kan kemudian dengan cara ini kita hanya perlu mempublish event dan kemudian kita dapat handle dari manapun sesuai dengan flow yang kita inginkan.
Kesimpulan
Dengan Event bus kita bisa kirim event dari manapun dan kita dapat listen event tersebut dari manapun. RxJava kemudian recommended library untuk menggantikan event bus library yang dulu umum dipakai oleh developer android apps. Ini memiliki kelebihan dibandingkan dengan via ViewModel adalah bahkan komunikasinya bisa antar 2 activity.
Terima kasih sudah membaca dan semoga bermanfaat.