Membangun Aplikasi Android yang Event Responsive dan Real Time
Apr 16, 2017
Membangun Aplikasi Android yang Event Responsive dan Real Time
Hi, Saya Sidiq• Chief Innovation Officer at Nusantara Beta Studio• Google Developer Expert for Android• Intel Android Software Innovator• Developer Mengajar Initiator• ID-Android-Dev TechTalk Co-Initiator• Passionate coder, mentor, traveller and diver
Responsive App : Observer Pattern di Android dan Bagaimana GreenRobot EventBus Bekerja
Observer PatternHubungan dependensi antar obyek yang bersifat satu ke banyak dalam sebuah aplikasi yang jika terdapat perubahan pada sebuah objek maka semua obyek yang behubungan akan menerima notifikasi dan melakukan proses update terhadap perubahan tersebut secara otomatis.
Class A (Publisher)
Class B(Subscriber)
Class C(Subscriber)
Changes
Notifies
Does the Update(update())
Does the Update(update())
1
2
3
React of notified changes
Gambaran di UML Diagram
Hal yang perlu diperhatikan• Setiap obyek bisa menjadi publisher sekaligus subscriber tergantung dari
sudut pandang dependensi dan subyek event yang ada• Obyek yang diamati disebut subyek dan obyek yang mengamati disebut
observer/listener• Setiap obyek yang akan menjadi observer harus diregistrasikan terlebih
dahulu (di android pada onCreate()/onResume()) dan dinonaktifkan (deregistration) ketika obyek akan dimusnakan dari memory (di android pada method onDestroy())
• Setiap obyek turunan observable wajid didaftarkan di Custom Application
Manfaat Observer Pattern• Mempermudah komunikasi antar komponen seperti fragment,
activity dan service• Aplikasi dapat lebih reaktif/responsif terhadap perubahan
event/state yang ada. Misal : updating data dari webservice dan local database
Contoh Kasus
Class A (Publisher)
Class B(Subscriber)
Class C(Subscriber)
Changes
Notifies
Does the Update
Does the Update
1
2
3
React of notified changes
• Kita memiliki 3 Activity yang mengimplementasikan Observer • Activity A akan melakukan perubahan terhadap sebuah obyek• Activity B dan Activity C akan menerima perubahan tersebut dan bereaksi secara otomatis untuk melakukan prosesTerhadap perubahan yang terjadi
Sample tersedia di https://github.com/sidiqpermana/SampleObserver
Bacaan Lanjutan• http://
www.vogella.com/tutorials/DesignPatternObserver/article.html• http://
www.tutorialspoint.com/design_pattern/observer_pattern.htm• http://
www.codeproject.com/Articles/565642/Observer-design-pattern-in-java
• https://en.wikipedia.org/wiki/Observer_pattern• https://dzone.com/articles/observer-pattern-java
Penggunaan GreenRobot Eventbus
GreenRobot EventBus• Implementasi dari ObserverPattern dalam bentuk library pada
Android• Memudahkan komunikasi antar komponen seperti : Activity,
Service, Fragment dan Background Thread serta melakukan optimasi proses didalamnya.
• Less code, better quality. And you don't need to implement a single interface!
Cara kerja EventBus
Contoh Kasus (modifikasi dengan EventBus)
Class A (Publisher)
Class B(Subscriber)
Class C(Subscriber)
Changes
Notifies
Does the Update
Does the Update
1
2
3
React of notified changes
• Kita memiliki 3 Activity yang meng-instance obyek EventBus • Activity A akan melakukan perubahan terhadap sebuah obyek• Activity B dan Activity C akan menerima perubahan tersebut dan bereaksi secara otomatis untuk melakukan prosesTerhadap perubahan yang terjadiSample tersedia di : https://github.com/sidiqpermana/SampleGreenRobotEventBus
Bacaan Lanjutan• http://codentrick.com/observer-pattern-in-mobile-eventbus-and-notificatio
ncenter/• https://github.com/greenrobot/EventBus• https://greenrobot.github.io/EventBus/• https://github.com/greenrobot/EventBus/blob/master/HOWTO.md • https://github.com/greenrobot/EventBus/blob/master/COMPARISON.md• http://code.tutsplus.com/tutorials/quick-tip-how-to-use-the-eventbus-librar
y--cms-22694
Real Time Tracking dengan Firebase GeoFire
Realtime dengan Firebase• Firebase merupakan sebuah platform cloud backend yang
menawarkan layanan Real Time database, authentifikasi, dan hosting
• Contoh yang paling relevan adalah messaging atau chatting• Silakan ke https://www.firebase.com/ untuk lebih detail• Ikuti kursus gratisnya di
https://www.udacity.com/course/firebase-essentials-for-android--ud009
GeoFire• Merupakan salah satu implementasi Firebase untuk menyimpan
dan melakukan query berdasarkan lokasi. • Hasil query akan bersifat realtime berdasarkan update pada
masing-masing item• GeoFire melakukan lebih dari sekedar pengukuran jarak antar item
(node) tapi juga menseleksi data berdasarkan radius yang diberikan dan menjaga aplikasi tetap ringan dan responsif walau dengan set data yang besar sekalipun
Implementasi GeoFire• Cocok untuk digunakan dalam aplikasi geo-tracking monitoring
seperti aplikasi transportasi (yang kekinian, gak mau mensyen :D) atau Tracking Pacar, Gebetan, Mantan, Modusan, atau Istri Kamu :D
• Umumnya dikombinasikan dengan FusedLocation, Scheduler Service dan Google Maps
Case Study• Kita akan membuat aplikasi sederhana menampilkan titik dari user
yang mendownload aplikasi dan tracking lokasinya! • Sample tersedia di https://
github.com/sidiqpermana/SampleGeoFire• Contoh app : https://goo.gl/8Fq6yC
Matur Nuwun