news

Senin, 15 Juni 2020

Belajar Komponen Architecture Android Jetpack


Architecture

Masuk ke bagian selanjutnya, di bagian Android Jetpack ada komponen Architecture. Komponen Architecture atau arsitektur membantu Anda mendesain aplikasi yang tangguh, dapat diuji, dan dapat dipelihara. Berikut bagian dari komponen arsitektur:


Data Binding

Library Data Binding adalah library pendukung yang memungkinkan Anda untuk mengikat komponen UI di layout ke sumber data di Aplikasi menggunakan format deklaratif dan bukan secara terprogram. Layout sering didefinisikan dalam Activity dengan kode yang memanggil metode UI Framework. Contohnya lihatlah kode di bawah ini:
Kotlin
val textView = findViewById(R.id.sample_text)
textView.text = viewModel.getUserName()
Java
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());
findViewById() digunakan untuk menemukan widget TextView, kemudian Anda menggunakan setText untuk memasukkan nilainya.

Contoh berikut menunjukkan cara menggunakan library Data Binding untuk memasukkan teks ke widget langsung di file layout. Data Binding memugkinkan Anda menghilangkan kebutuhan pemanggilan kode Java yang ditunjukkan di atas. Perhatikan penggunaan sintaks @ {} dalam assignment expression berikut:
<TextView
android:text="@{viewmodel.userName}" />
Keren bukan? Anda dapat memasukkan nilai langsung dari berkas layout. Cara ini memungkinkan Anda menghapus banyak kode untuk inisialisasi dan mengatur nilai di dalam Activity, sehingga kode menjadi lebih simple dan lebih mudah untuk dipelihara. Anda juga dapat meningkatkan kinerja aplikasi Anda dan membantu mencegah memory leak dan NPE (Null Pointer Exception). Penasaran dengan menggunaan dalam pembuatan Aplikasi secara dalam? Anda bisa lihat di tautan ini.

Lifecycles

Apa itu Lifecycle? Jika Anda membaca materi Dicoding tentang Activity, pada kelas tersebut dibahas bagaimana Lifecycle pada sebuah Activity bekerja. Komponen Lifecycle memungkinkan aplikasi untuk memberi aksi ketika terjadi perubahan Lifecycle dari sebuah Activity atau Fragment. Komponen ini membantu Anda menghasilkan kode yang lebih teratur, ringan, dan mudah dipelihara. Sebagian besar komponen aplikasi yang didefinisikan sebagai Android Framework mempunyai Lifecycle-nya masing-masing. Dengan Lifecycle, aplikasi tidak akan mengalami memory leak dan crash. Pada modul selanjutnya akan kita bahas mendalam mengenai contoh implementasi Lifecycle.

LiveData

LiveData adalah observable class holder yang akan memberikan pemberitahuan jika terjadi perubahan data. Tidak seperti kelas observable lainnya, LiveData merupakan Lifecycle-Aware. Ini artinya LiveData dapat merespon perubahan yang ada di Lifecycle (Activity, Fragment, atau Service). LiveData hanya akan memperbarui komponen pengamat atau observers ketika lifecycle aplikasi dalam keadaan aktif. Lalu bagaimana penggunaan LiveData dalam pembuatan Aplikasi Android? Sabar ya, karena LiveData akan dibahas di modul selanjutnya.

Navigation

Navigation mengacu pada interaksi yang memungkinkan pengguna untuk melakukan navigasi melintasi, masuk dan keluar dari berbagai konten dalam aplikasi Anda. Komponen Navigation membantu Anda dalam menerapkan navigasi lebih mudah dan cepat, mulai dari klik tombol yang sederhana hingga pola yang lebih kompleks, seperti BottomNavigation dan Navigation Drawer. Komponen navigasi juga menjamin pengguna untuk mendapatkan pengalaman yang lebih konsisten dan dapat memprediksi dengan mematuhi serangkaian prinsip yang telah ditetapkan. Komponen Navigation mempunyai keunggulan seperti:
  • Mampu menangani perpindahan transaksi dengan Navigation Graph.
  • Mampu menangani alur navigasi dengan benar secara default.
  • Menyediakan resource yang terstandarisasi untuk animasi dan transisi.
  • Menerapakan dan menangani deep link.
  • Di dalamnya menyediakan komponen NavigationUI seperti Navigation Drawer dan Bottom Navigation dengan meminimalkan pekerjaan tambahan.
  • Safe Args , merupakan plugin Gradle yang menyediakan keamanan ketika melakukan navigasi dan mengirim data antar fragment.
  • Dukungan ViewModel - Anda dapat mengatur ViewModel ke Navigation Graph untuk berbagi data terkait UI antar fragment.
Anda bisa mempelajari lebih dalam tentang Navigation pada Modul Dicoding tentang Navigation Component atau dari documentation Android di sini.

Paging/Pagination

Library ini memudahkan Anda memuat data secara bertahap dan anggun dalam UI aplikasi Anda. Ia memuat data secara parsial berdasarkan permintaan Anda, sehingga paging akan mengurangi penggunaan bandwidth jaringan dan sumber daya sistem.
Diagrams of data flows
Paging - https://developer.android.com/topic/libraries/architecture/paging/
Materi Paging akan dibahas lebih dalam di modul selanjutnya. Kita akan mengetahui apa saja komponennya, apa keuntungannya dan bagaimana mengimplementasikannya.

Room

Apa itu Room? Room menyediakan lapisan abstraksi di atas SQLite. Ini memungkinkan kita untuk mengakses database dengan mudah dan juga mampu memanfaatkan kekuatan dari SQLite secara maksimal. Aplikasi yang menangani data dengan jumlah yang banyak, akan sangat diuntungkan. Apa pasal? Karena data dapat dipertahankan secara lokal. Ini akan bermanfaat kala koneksi sedang off atau user ada di tempat tempat tertentu yang mewajibkan mode pesawat. Dengan menggunakan database lokal, pengguna masih dapat menelusuri konten saat sedang offline. Setiap perubahan konten yang disimpan pengguna akan disinkronkan ke server setelah perangkat kembali online.
Di sini Room hadir menangani masalah tersebut untuk Anda. Dari pada SQLite, kami sangat menyarankan menggunakan Room. Namun, jika Anda ingin mempelajari menggunakan SQLite secara langsung, Anda bisa membaca pada Modul Dicoding tentang SQLite atau pada tautan berikut: https://developer.android.com/training/data-storage/sqlite.html.
Untuk pembahasan Room lebih dalam, simak modul selanjutnya yah. Kita akan tahu komponen apa saja yang ada di Room, bagaimana mengimplementasikannya dan keunggulan dari Room.

ViewModel

Siapa yang tidak kenal dengan ViewModel? Kelas ViewModel dirancang untuk menyimpan dan mengelola data pada UI. Kelas ViewModel memungkinkan kita untuk dapat mempertahankan data ketika terjadi configuration changes seperti merotasi layar. Penasaran dengan penggunaan komponen ViewModel? Sabar yah. Tunggu materi berikutnya.

WorkManager

Komponen terakhir dari Android Jetpack Architecture adalah WorkManager. API WorkManager memudahkan Anda dalam melakukan menjadwalkan tugas yang tertunda atau tugas yang berjalan secara asynchronous yang akan dijalankan meski sudah keluar dari aplikasi atau perangkat dihidupkan ulang. Apa saja fitur unggulan dari WorkManager?
  • WorkManager mempunyai dukungan untuk API 14 ke atas. Hal ini karena ia akan menggunakan JobScheduler di device yang mempunyai API23 ke atas dan kombinasi BroadcastReceiver+AlarmManager pada device yang mempunyai API14-22.
  • Anda bisa menambahkan syarat pekerjaan (constraint) seperti ketersediaan jaringan atau status pengisian daya.
  • Anda juga bisa menjadwalkan tugas yang berjalan secara asynchronous sekali jalan atau secara berkala.
  • Penjadwalan bisa dilakukan secara berantai (task-chaining).
  • Menjanjikan tugas-tugas akan pasti tereksekusi, bahkan jika aplikasi atau device dalam posisi restart.
  • Mampu mengikuti fitur hemat daya atau power-saving seperti Doze mode.
Anda bisa mempelajari lebih dalam tentang Navigation pada Modul Dicoding tentang WorkManager atau dari documentation Android di sini.