ID Android Dev Talk - Observer Pattern, Event Bus Usage, Firebase & Geofire

Post on 16-Apr-2017

701 views 0 download

Transcript of ID Android Dev Talk - Observer Pattern, Event Bus Usage, Firebase & Geofire

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

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

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