Sunday, September 17, 2017

Android Architecture Components

Pada Google I/O yang diselenggarakan pada Mei 2017 kemarin, Google mengumumkan bebarapa hal baru yang ditambahkan pada Android. Tepatnya ada 29 fitur baru dari sisi development yang ditambahkan pada platform Android. Fitur-fitur ini terbagi ke dalam dua bagian, yaitu fitur yang diperbarui dan fitur yang ditambahkan ke Android. Gambar 1 menunjukan daftar fitur-fitur baru tersebut:

Gambar 1. Fitur baru pada Android

Dari ke-29 fitur baru di atas, ada beberapa fitur yang menarik perhatian saya, yaitu Kotlin dan Architecture Components. Pada tulisan sebelumnya, saya membahas tentang kotlin(Intro to Kotlin dan Kotlin on Android Studio), dan pada tulisan kali ini saya akan berbagi tentang Architecture Components.

Mengapa saya memilih topik Architecture Components? Saya memilih topik ini karena menurut saya Architecture Components merupaka fitur yang sejak dulu ditunggu-tunggu oleh developer android dan merupakan fitur penting yang dapat membantu memudahkan developer Android dalam membangun aplikasi Android.


Architecture Components

Jadi, apa itu Architecture Components? Architecture Components adalah kumpulan library yang dibuat untuk membantu developer Android dalam membangun aplikasi, sehingga aplikasi yang dibuat akan kokoh, mudah dites, dan mudah dipelihara.

Architecture Componets Terdiri dari lifecycle, lifecycleOwner, lifecycleObserver, LiveData, ViewModel, dan Room. Komponen-komponen ini akan membantu kita untuk menangani lifecycle dari Activity, Fragment atau komponen UI lainnya dan membantu menangani data persistence.

Lifecycle

Lifecycle adalah kelas yang berisi informasi state lifecycle dari suatu komponen, misalnya Activity atau Fragment. Dengan Lifecycle, kita dapat mengamati state dari komponen tersebut. Lifecycle memiliki dua enumerasi yaitu STATE dan EVENT. Gambar 2 adalah diagram yang menunjukkan States dan Events dan hubungan diantara keduanya yang dimiliki oleh Lifecycle. 
Gambar 2. States dan Events pada Lifecycle


Salah satu tujuan dari dibuatnya architecture components adalah untuk menjawab masalah lifecycle yang sering dihadapi oleh developer Android. Diharapkan dengan dibuatnya komponen Lifecycle, developer Android akan dimudahkan untuk menangani android lifecycle.

LifecycleOwner dan LifecycleObserver

LifecycleOwner adalah interface yang menandakan bahwa sebuah kelas memiliki lifecycle. Memiliki satu method, yaitu getLifecycle. getLifecycle ini akan mengembalikan lifecycle dari kelas tersebut. 

Saat ini architecture components masih dalam versi alpha, yang artinya belum stabil, sehingga Activity dan Fragment belum bisa menggunakan LifecycleOwner. Sebagai gantinya, google menyediakan lifecycleActivity dan lifecycle fragment untuk bisa dicoba sekarang.

LifecycleObserver adalah interface yang dapat meng-observe lifecycle dari kelas yang meng-implements LifecycleOwner. Objek yang meng-implement LifecycleObserver akan menjadi lifecycle-aware yang artinya dapat bertingkah sesuai dengan lifecycle yang di-observe-nya.


LiveData


Livedata adalah data-holder yang lifecyle-aware dan observable. Apa maksudnya? Yang dimaksud dengan lifecycle-aware adalah, misalnya kita membuat LiveData di suatu Activity, LiveData bisa mengetahui Activity tersebut dalam state apa, dan dapat bertindak sesuai dengan state Activity tersebut.


Gambar 3. Daur hidup LiveData dan Activity

Gambar 3 adalah contoh timeline dari LiveData dan Activity. Misalnya kita menyimpan suatu object di dalam LiveData, dan object tersebut berubah nilainya. Pada gambar ini, dapat kita lihat jika data yang ada di dalam LiveData berubah, LiveData akan mengabari Activity, dan Activity dapat memberbarui UI sesuai dengan nilai baru yang diberikan oleh LiveData.

Jika orientasi layar berubah, Activity akan dihancurkan dan akan dibuat kembali. Saat onPause, onStop, dan onDestroy dipanggil, LiveData tidak akan mengabari Activity tersebut. Hal ini sangat berguna, karenakita tidak perlu melakukan pekerjaan yang tidak ada gunanya (mengubah Activity yang sedang tidak dalam onResume).

ViewModel


ViewModel digunakan untuk menyimpan data pada UI sehingga data tersebut tidak hilang saat configuration change terjadi. Sebenarnya android framework sudah menyediakan cara untuk menyimpan data saat configuration change, yaitu dengan onSavedInstanceState. Tetapi, onSavedInstancestate hanya dapat digunakan untuk menyimpan data yang sederhana seperti String, Integer, atau boolean. Untuk menyimpan data yang lebih besar dari ketiga tipe data tersebut, sangat tidak disarankan menggunakan onSavedInstanceState karena dapat memperlambat aplikasi.

Gambar 4. Daur hidup ViewModel dan Activity
Gambar 4 menunjukan lifecycle dari ViewModel jika dibandingkan dengan lifecycle dari Activity yang bersangkutan. Meskipun Activity dihancurkan(destroyed) berkali-kali, ViewModel tidak akan dibuat ulang, dan Activity yang dibuat ulang akan tetap menggunakan ViewModel yang sama. Hal ini berguna karena kita tidak perlu mengambil data dari webservice ataupun database.

Room

Last but not least, Room Persistence Library. Room adalah object mapping library, lebih spesifiknya adalah object relational mapping. Room memberikan abstraction layer untuk SQLite database. Dengan Room, kita bisa membuat database dengan kode yang sedikit dan sederhana. Dan yang paling keren dari room adalah, room mengerti SQL. Jadi kita sudah memahami SQL, tidak akan sulit untuk menggunakan Room. Untuk membuat relational database dengan Room, kita menggunakan Dao, Entity, dan kelas database Room. (Pembahasan tentang Room akan dilanjutkan pada tulisan saya berikutnya, so cekidot 😉)



Guide to App Architecture


Selain membuat Architecture Components, Google juga memberikan panduan untuk developer Android, bagaimana sebaiknya Aplikasai Android dibangun. Gambar 4 merupakan bagan yang menggambarkan arsitektur yang direkomendasikan oleh Google.
Gambar 4. Recommended App Architecture


Conclusions


Untuk pertama kalinya setelah 8 tahun mengembangkan Android, Google memberikan panduan yang jelas bagaimana cara yang baik untuk membangun aplikasi Android. Diharapkan, architecture components merupakan jawaban dari masalah developer Android dalam menangani lifecycle dan persistence.

Demikianlah pembahasan mengenai Android Architecture Components. Semoga tulisan ini dapat memberikan sedikit gambaran mengenai AAC. Sebelum membuat tulisan ini, saya membuat project di android studio untuk mencoba Architecture Components. Jika anda tertarik untuk mencoba, dapat membuka tautan ini.

Reference

No comments:

Post a Comment