Sunday, September 17, 2017

Mengenal RxAndroid

Sekarang ini banyak sekali developer Android yang membicarakan dan menggunakan RxJava atau Reactive Programming ketika men-develop aplikasi Android. Apa itu Reactive Programming? menurut André Staltz:

"Reactive programming is programming with asynchronous data stream."

- Asynchronous data adalah data yang tidak dapat diprediksi kapan data tersebut diterima atau dipanggil. Salah satu contohnya adalah onClick pada suatu button, kita tidak tahu pasti kapan suatu button akan diklik oleh user.
- Stream adalah suatu aliran data yang dapat dikirimi value setiap saat sampai kita menutup stream tersebut.

Nah, selanjutnya apa itu RxAndroid, RxAndroid adalah implementasi JVM dari ReactiveX yang dibuat oleh NetFlix. RxAndroid adalah sebuah library yang berguna untuk meng-handle asynchronous task di aplikasi Android. 
Ada tiga konsep dalam RxAndroid:
  1. Observables
  2. Observers
  3. Subscribers
Mengambil ilustrasi yang sangat baik oleh Rohman Hakim, ketiga hal tesebut diibaratkan sebagai sebuah perosotan dengan dua orang diatas perosotan dan dibawah perosotan. Orang yang diatas menngirim beberapa bola melalui perosotan, dan orang yang dibawah menunggu bola
  • perosotan adalah sebuah stream atau observable
  • proses mengirim bola (value) melalui perosotan disebut emitting
  • anak yang dibawah adalah observer yang menunggu (subscribing) datangnya bola
  • seluruh proses observer-melakukan subscribing terhadap observable disebut subscription
Reactive Programming berguna untuk membantu menyelesaikan masalah real time ux yang kompleks. Contohnya validasi form registrasi, jika dengan metode imperatif di Android maka kita harus menggunakan text watcher untuk meng-handle inputan setiap huruf yang user input, kita tidak tahu kapan user berhenti mengetik. Belum lagi kita harus menyediakan flag-flag untuk validasi email dan password. Dengan Rx, kita hanya perlu mengimplementasikan ketiga konsep diatas.

Sebagai contoh, misalnya kita mau mengecek berapa kali user melakukan tap pada button.
Pertama kita buat Observable:


Selanjutnya kita buat Observer:

method showTapCount(integer) untuk memunculkan text berapa kali button ditap:

Selanjutnya kita melakukan susbcribing dari observer dan observable yang sudah dibuat:

Marble diagram dari code diatas adalah sebagai berikut: 
bisa dilihat terdapat tiga operator (kotak kuning) yang membuat tiga stream baru yang menghasilkan hasil dari berapa kali user melakukan tap. Jangan lupa untuk memasukkan RxJava dan RxAndroid kedalam build.gradle


References:

No comments:

Post a Comment