Tuesday, March 15, 2016

Event bus Android

Pada kali ini saya akan membahas tentang Event Bus di Android. Konsep Event Bus sekarang ini sangat populer  mungkin aplikasi Android yg kalian install menggunakan konsep ini.

Sebelum kita mulai, mari kita lihat bagaimana component android (activity, fragment, service etc) saling berkomunikasi. Berikut gambarnya:



Padahal gambar diatas bisa dilihat beberapa komponen Android saling berkomunikasi. Coba kalian bayangkan apabila aplikasi kalian lebih besar dari contoh diatas. Wow pasti akan sulit dimaintain dan tidak agile, berikut beberapa kekurangan dari gambar diatas:
  • Tight coupling antara component
  • Mengubah UI menjadi mimpi buruk!!!
  • Boiler plate koding:
    • Butuh mendefinisikan Interface
    • Callback callback dan callback untuk setiap async task dan komunikasi antar component!
    • Listener management
  • Menambahkan 1-5 line code untuk mencegah aplikasi crash jika state component sedang tidak aktif ketika melakukan callback, misal : ingin menampilkan pesan sukses dilayar (TextView) ketika AysncTask sudah selesai di eksekusi tetapi pada saat itu state Fragment tidak di attached ke dalam Activity jika hal ini tidak di handle dengan baik maka aplikasi akan menjadi crash. Bisa dibayangkan jika kalian mempunya 3 AsynTask dalam 1 komponen. 
Event Bus akan menyelamatkan Anda dari permasalahan diatas:


Pada data diatas terlihat setiap komunikasi ter-centralize dan setiap komponen di atas tidak saling berkomunikasi secara langsung. Ada 4 langkah untuk melakukan Event Bus:
  1. Definisikan Event
  2. Register Subscriber
  3. Post Event (Publisher)
  4. Receive Event
Berikut gambar detil dari 4 langkah diatas:
Post Event bisa dilakukan dari mana saja (activity, service dll) dan Event akan diterima kepada komponen yang men-subscribe event tersebut. Hmm cukup mudah bukan.

Untuk menggunakan konsep ini cukup mudah banyak contoh sample project github di internet yang bisa kalian pelajari. Berikut library open source yg cukup populer seperti :
  1. https://github.com/greenrobot/EventBus
  2. http://square.github.io/otto/
  3. https://github.com/google/guava/wiki/EventBusExplained
Selamat Mencoba!

Sumber

No comments:

Post a Comment