SlideShare a Scribd company logo
Level Up With Data
Binding
(Android Architecture
Componenent)
Derayan Bima Alamsyah
Android Developer @ GITS Indonesia
Kotlin Android Developer Expert Certified (Dicoding)
Indonesia Android Kejar Fasilitator
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
Apa itu Android Architecture Component?
Lalu, untuk apa adanya AAC?
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
“Android architecture components are a collection of
libraries that help you design robust, testable, and
maintainable apps.”
https://developer.android.com/topic/libraries/architecture/
Komponen Arsitektur, bertujuan menyelesaikan dua
tantangan permasalahan :
1. Managing your UI component lifecycle
(activity/fragment)
2. Handling data persistance
Android Architecture Component Diagram
Lifecycle
Adding Components to your Project
Tambahkan google() pada file build.gradle project anda :
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
Lifecycle
Activity LifeCycle
Fragment LifeCycle
Lifecycle
Lifecycles, merupakan class yang menyimpan informasi tentang
keadaan siklus komponen (seperti activity atau fragment) dan
memungkinkan objek lain untuk mengamati keadaan ini.
a. Event
b. State
Menangani Lifecycle dengan Lifecycle-Aware Component
https://developer.android.com/topic/libraries/architecture/lifecycle#java
new Lifecycle-Aware Component
Lifecycles-Aware Component, komponen yang sadar akan siklus (lifecycle) :
1. Melakukan tindakan sebagai respons, terhadap perubahan dalam status
lifecycle yang aktif, sepert di activity dan fragment
2. Membangun komponen yang sadar dengan siklus hidup secara otomatis
3. Menghasilkan kode yang lebih teratur, dan sering kali lebih ringan, dan lebih
mudah dipelihara.
android.arch.lifecycle
new Lifecycle-Aware Component
Membuat class untuk LifecycleObserver
Bagiamana cara
kerjanya
Lifecycles-Awarness
Component?
new Lifecycle-Aware Component
Menambahkan addObserver() pengamat dari metode Lifecycle class. Bertugas untuk
mengamati lifecycles secara sadar-otomatis
…
}
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
View Model
Sebuah class dirancang untuk menyimpan dan
mengelola data yang berhubungan dengan UI.
Bekerja dengan sadar akan kondisi lifecycles
(siklus hidup) pada suatu fragment/activity
Class View Model
Memasang View Model
…
}
}
Siklus Hidup(Lifecycle) View Model
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
Live Data
Digunakan untuk mengamati
perubahan data untuk langsung
memperbarui UI
Live Data sifatnya sadar
akan siklus hidup dari
komponen aplikasi lain
(activity, fragment)
Kenapa kita harus memakai Live Data? Apa sih
keuntungannya?
Keuntungan Menggunakan Live Data
1. Ensures your UI matches your data state
2. Mengurangi kemungkinan kebocoran memori
3. Tidak ada crash karena aktivitas yang terhenti
4. Tidak ada lagi penanganan siklus hidup manual
5. Selalu memperbarui data
Dengan LiveData
Bekerja dengan LiveData Object
1. Buat intance LiveData untuk menyimpan tipe data
tertentu. Dibuat dalam ViewModel Class
Bekerja dengan LiveData Object
2. Buat Observer objek, yang akan mengontrol apa yang
terjadi ketika data pada LiveData yang dimiliki object
berubah.
Bekerja dengan LiveData Object
3. Update LiveData Object, untuk memperbarui data yang
disimpan
Data Binding
Data Binding
Data Binding adalah proses membangun koneksi antarmuka
aplikasi (application UI) dan business logic
Level Up! With Data Binding
Keuntungan Data Binding
1. Memudahkan pengikatan data pada UI
2. Mempersingkat code
3. Speed up development
4. Say goodbye to (findViewById)
Memulai Data Binding
android {
...
dataBinding {
enabled = true
}
}
Setting pada element build.gradle
File Layout Data Binding
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)
Room
Room, merupakan library
pemetaan objek SQLite
● Database
● Entity
● DAO (Data Access
Object)
1. Memungkinkan akses data yang lebih kuat dengan
SQLite
2. Menghindari kode boilerplate
3. Mudah mengkonversi data tabel SQLite ke objek java
Keuntungan Room?
Room
Entity
@Entity
data class User(
@PrimaryKey var uid: Int,
@ColumnInfo(name = "first_name") var firstName: String?,
@ColumnInfo(name = "last_name") var lastName: String?
)
Dao
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
fun loadAllByIds(userIds: IntArray): List<User>
@Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
"last_name LIKE :last LIMIT 1")
fun findByName(first: String, last: String): User
@Insert
fun insertAll(vararg users: User)
@Delete
fun delete(user: User)
}
Dao
@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Created Room Database
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java, "database-name"
).build()
Codelabs room :
https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6
Nah jadi gimana? Asik gak, ngoding android
dengan Android Architecture Component?
ANDDemo Discuss
Android Architecture Sample Codelabs
● Basic Sample AAC :
○ https://github.com/googlesamples/android-architecture-compo
nents/tree/master/BasicSample
● Lifecycle-Aware Component :
○ https://codelabs.developers.google.com/codelabs/android-lifecy
cles/#0
● ListBencana App, Code Sample MVVM + DataBinding :
○ https://github.com/aderayanbima31/gits-mvvm-kotlin
● Intermediate Sample (Sun Flower App) :
○ https://github.com/googlesamples/android-sunflower
Medium GITS App Insight
https://medium.com/gits-apps-insig
ht/save-more-time-in-making-an-an
droid-apps-bfe0485f2fe2
https://medium.com/gits-apps-insig
ht/tutorial-create-your-own-templa
te-for-android-studio-1aaa9b4cb18
bit.ly/GITSClass11
For feedback GITS Class
Terima Kasih
aderayanbima31 aderayanbima31

More Related Content

PPTX
Pertemuan 11 database
PPTX
Laporan pembuatan aplikasi my so untuk android ppt
PDF
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
PPTX
Android Workshop beginner
PPTX
PPT Schematics BST 2024 Advanced Day 1.pptx
PDF
Chapt 03 layouting dan desain antarmuka &amp; input kontrol dan android widget
DOC
Siti maryam alizza_6701140222_pis1405_apsi
PPTX
Android Fundamentals #1.pptx
Pertemuan 11 database
Laporan pembuatan aplikasi my so untuk android ppt
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Android Workshop beginner
PPT Schematics BST 2024 Advanced Day 1.pptx
Chapt 03 layouting dan desain antarmuka &amp; input kontrol dan android widget
Siti maryam alizza_6701140222_pis1405_apsi
Android Fundamentals #1.pptx

Similar to GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia) (20)

PDF
Menggunakan database di android
PDF
Pengantar Android
PDF
Edwinprassetyo-1100631028-tugas1
PPTX
Tutorial web site aida dan jesika
PDF
Android fundamental development
PPTX
Fundamental android application development
PPTX
Layout, listview, gridview, and adapter
PPTX
Kelompok 7
PPTX
Tugas 3 – 0317 (individu)
PDF
Cara Akses Database Menggunakan ADO.NET
ODP
Mengamankan Aplikasi Java EE 6
PDF
Simple tutorial : Android get and post data
PDF
Pertemuan 2 - Materi [MP - 2016].pdf
PPTX
Pengenalan pemrograman android
PPTX
02 Activity - Intents - Fragment.pptx
PDF
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
PDF
Belajar Android Membuat Katalog Produk
PDF
Ebook Workshop Dasar android
PDF
Pemrograman Mobile - (Pengenalan dan Instalasi Android)
Menggunakan database di android
Pengantar Android
Edwinprassetyo-1100631028-tugas1
Tutorial web site aida dan jesika
Android fundamental development
Fundamental android application development
Layout, listview, gridview, and adapter
Kelompok 7
Tugas 3 – 0317 (individu)
Cara Akses Database Menggunakan ADO.NET
Mengamankan Aplikasi Java EE 6
Simple tutorial : Android get and post data
Pertemuan 2 - Materi [MP - 2016].pdf
Pengenalan pemrograman android
02 Activity - Intents - Fragment.pptx
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Belajar Android Membuat Katalog Produk
Ebook Workshop Dasar android
Pemrograman Mobile - (Pengenalan dan Instalasi Android)
Ad

More from GITS Indonesia (10)

PDF
GITS Webinar: How to Build UI/UX Portfolio that Stand Out
PDF
GITS Webinar: Implementasi REST API di iOS Menggunakan Alamofire dan SwiftyJSON
PDF
Fundamental Node.js (Workshop bersama Front-end Developer GITS Indonesia, War...
PDF
Gits class #22: [ONLINE] Analyze Your User's Activities Using BigQuery and Da...
PDF
GITS Class #21 How to Build Your Dream Team to Achieve the Target
PDF
GITS Class #20: Building A Fast and Responsive UI in React Native
PDF
GITS Class #19: Build Large Scale Vue.js Apps with Vuex
PDF
GITS Class #17: Coding Multiple Apps with Flutter
PDF
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
PDF
GITS Class #12: iOS & Android Component Principles bersama Ajie Arga dan Radh...
GITS Webinar: How to Build UI/UX Portfolio that Stand Out
GITS Webinar: Implementasi REST API di iOS Menggunakan Alamofire dan SwiftyJSON
Fundamental Node.js (Workshop bersama Front-end Developer GITS Indonesia, War...
Gits class #22: [ONLINE] Analyze Your User's Activities Using BigQuery and Da...
GITS Class #21 How to Build Your Dream Team to Achieve the Target
GITS Class #20: Building A Fast and Responsive UI in React Native
GITS Class #19: Build Large Scale Vue.js Apps with Vuex
GITS Class #17: Coding Multiple Apps with Flutter
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #12: iOS & Android Component Principles bersama Ajie Arga dan Radh...
Ad

Recently uploaded (8)

PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
PPTX
Implementasi Microservices pada Manufaktur
PPT
pengantar-sistem-informasi manajemen.ppt
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
PPTX
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
PPTX
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Implementasi Microservices pada Manufaktur
pengantar-sistem-informasi manajemen.ppt
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...

GITS Class #11: Android Architecture Component bersama Derayan Bima (Android Dev di GITS Indonesia)