Mochamad Kolbi Nuron_5025231183_PPB B_MembuatLoginPageMVVM
Nama: Mochamad Kolbi Nuron
Kelas: PPB B
NRP: 5025231183
1. Pendahuluan
Laporan ini disusun untuk mendokumentasikan pengembangan aplikasi "Login App" berbasis Android. Aplikasi ini bertujuan untuk menyediakan sistem autentikasi sederhana (Login dan Registrasi) dengan penyimpanan data pengguna secara lokal. Fokus utama pengembangan adalah pada efisiensi akses UI, persistensi data, dan performa aplikasi melalui pemrograman asinkron.
2. Teknologi dan Library yang Digunakan
Aplikasi ini dikembangkan menggunakan teknologi Android modern dengan beberapa library pendukung untuk meningkatkan efisiensi pengembangan dan kualitas aplikasi.
Teknologi yang digunakan meliputi:
1. Bahasa Pemrograman Kotlin
Kotlin digunakan sebagai bahasa utama dalam pengembangan aplikasi Android karena memiliki sintaks yang lebih ringkas, aman, serta mendukung fitur modern seperti Coroutines.
2. View Binding
View Binding digunakan untuk menghubungkan komponen antarmuka (UI) pada XML dengan kode Kotlin. Library ini menggantikan penggunaan findViewById() sehingga akses terhadap komponen UI menjadi lebih aman, sederhana, dan mengurangi kemungkinan terjadinya error null pointer.
3. Room Database
Room Database digunakan sebagai sistem penyimpanan data lokal. Room merupakan library abstraksi dari SQLite yang mempermudah proses pembuatan database, pengelolaan tabel, serta proses query data.
4. Kotlin Coroutines dan lifecycleScope
Kotlin Coroutines digunakan untuk menjalankan proses yang membutuhkan waktu lama, seperti operasi database, secara asynchronous. Dengan menggunakan lifecycleScope, proses database dapat berjalan di background thread sehingga antarmuka aplikasi tetap responsif dan tidak mengalami lag.
5. Material Design
Material Design digunakan untuk membuat tampilan aplikasi yang modern, konsisten, dan mengikuti standar desain antarmuka Android.
3. Arsitektur Data (Room Database)
Aplikasi ini menerapkan Room Database dengan tiga komponen utama, yaitu:
1. Entity (User)
Entity berfungsi sebagai representasi tabel pada database. Pada aplikasi ini terdapat entity User yang digunakan untuk menyimpan data pengguna.
Struktur tabel users terdiri dari:
id: Primary key pengguna
username: Nama pengguna
email: Email pengguna
password: Password pengguna
2. DAO (UserDao)
DAO (Data Access Object) berfungsi sebagai penghubung antara aplikasi dengan database.
Pada DAO terdapat beberapa fungsi untuk mengelola data, seperti:
registerUser()
Digunakan untuk menyimpan data pengguna baru ke database.getUserByUsername()
Digunakan untuk mengambil data pengguna berdasarkan username saat proses login.
3. Database Class (AppDatabase)
AppDatabase merupakan class utama yang mengatur koneksi dan instance database.
Database dibuat menggunakan pola Singleton, sehingga hanya terdapat satu instance database yang digunakan selama aplikasi berjalan.
4. Implementasi Fitur Utama
A. Implementasi View Binding
View Binding diterapkan pada setiap Activity untuk mempermudah akses terhadap komponen UI.
Dengan View Binding, setiap elemen seperti EditText, Button, dan TextView dapat langsung dipanggil melalui objek binding tanpa menggunakan findViewById().
B. Autentikasi dan Validasi Input
Fitur autentikasi digunakan untuk mengatur proses registrasi dan login pengguna.
Pada halaman:
RegisterActivity
Pengguna memasukkan username, email, dan password.
Sistem melakukan validasi untuk memastikan semua data telah diisi.
Jika valid, data pengguna akan disimpan ke database Room.
LoginActivity
Pengguna memasukkan username dan password.
Sistem melakukan pengecekan data pengguna melalui database.
Jika data ditemukan dan password sesuai, pengguna berhasil masuk ke halaman utama.
C. Operasi Database Asynchronous dengan Coroutines
Operasi database dijalankan menggunakan Kotlin Coroutines melalui lifecycleScope.
Penggunaan asynchronous process bertujuan agar proses membaca dan menyimpan data tidak mengganggu proses utama aplikasi (Main Thread), sehingga aplikasi tetap berjalan dengan lancar.
D. Navigasi Antar Halaman Menggunakan Intent
Navigasi antar Activity menggunakan Intent.
Data tambahan seperti username dapat dikirimkan antar halaman menggunakan metode putExtra().
Contohnya:
Login berhasil → berpindah ke
MainActivityUsername dikirimkan untuk ditampilkan pada halaman utama
5. Analisis Alur Kerja Sistem (Workflow)
1. Proses Registrasi
Alur proses registrasi:
User membuka halaman Register.
User memasukkan data username, email, dan password.
Sistem melakukan validasi input.
Data dikirimkan ke Room Database.
Data tersimpan pada tabel users.
User diarahkan kembali ke halaman Login.
2. Proses Login
Alur proses login:
User memasukkan username dan password.
Sistem melakukan query ke database Room.
Database mencari data berdasarkan username.
Jika data ditemukan, sistem membandingkan password.
Jika password sesuai, user berhasil login.
User diarahkan menuju halaman utama (MainActivity).
3. Keamanan Sederhana
Sistem menerapkan validasi sederhana menggunakan pengecekan kondisi:
User harus tersedia di database.
Password yang dimasukkan harus sesuai dengan password yang tersimpan.
Jika kondisi terpenuhi, akses login diberikan.
6. Kesimpulan
Aplikasi Login App berhasil menerapkan sistem autentikasi sederhana menggunakan Kotlin, View Binding, dan Room Database.
Penggunaan View Binding membantu meningkatkan keamanan dalam pengelolaan komponen UI, sedangkan Room Database mempermudah proses penyimpanan serta pengambilan data pengguna secara lokal.
Selain itu, implementasi Kotlin Coroutines dan lifecycleScope membuat proses database berjalan secara asynchronous sehingga aplikasi tetap responsif dan mengikuti standar pengembangan Android modern.
Lampiran dan Dokumentasi
Untuk melengkapi laporan, disarankan menambahkan:
Screenshot aplikasi
Halaman Login
Halaman Register
Halaman utama setelah login berhasil
Tampilan Toast ketika login berhasil atau gagal
Detail teknis project
compileSdk version
minSdk version
versi Kotlin
library yang digunakan
Error Handling
Pesan error ketika username/password salah
Validasi ketika input masih kosong
Notifikasi ketika registrasi berhasil atau gagal
source code
Komentar
Posting Komentar