Tuesday, May 14, 2024

Tugas 10 - Siklus Proses Aktivitas Dengan Aplikasi Dessert Clicker

 Nama     : Florentino Benedictus

NRP       : 5025201222

Tahun    : 2024

Kelas      : Pemrograman Perangkat Bergerak I

Link Implementasi      :  MainActivity.kt


Tugas 10 - Siklus Proses Aktivitas Dengan Aplikasi Dessert Clicker

Pada tugas ini, digunakan aplikasi awal Dessert Clicker untuk mengetahui siklus proses aktivitas yang mencakup pembuatan hingga penghancuran suatu aktivitas. Dessert Clicker merupakan aplikasi yang dapat membelikan makanan penutup untuk pengguna ketika layar diklik oleh pengguna. Pengerjaan tugas menggunakan referensi Google Codelab - Tahapan Siklus Proses Aktivitas.

1. Inisiasi Proyek
Pertama-tama buka link https://github.com/google-developer-training/basic-android-kotlin-compose-training-dessert-clicker/tree/starter yang merupakan kode awal aplikasi, kemudian download ZIP dari branch starter. Ekstrak file .zip yang telah terdownload, pindahkan isi folder hasil ekstrak ke lokasi yang diinginkan, lalu buka Android Studio.
Klik Open pada bagian kanan atas lalu pilih folder project yang sudah di-extract lalu pilih OK. Kemudian tunggu hingga building model Gradle selesai.
Selanjutnya run aplikasi, maka akan terlihat tampilan awal aplikasi Dessert Clicker seperti gambar di atas. Aplikasi Dessert Clicker memiliki beberapa bug yang perlu diperbaiki.

2. Periksa Metode onCreate() dan Tambahkan Logging
Selanjutnya buka MainActivity.kt dari project. Logging dapat ditambahkan untuk metode-metode yang berada pada activity lifecycle meliputi onCreate(), onStart(), onResume(), onRestart(), onPause(), onStop(), onDestroy(). Pertama-tama logging akan ditambahkan untuk onCreate() dengan cara membuat value const TAG yaitu MainActivity sehingga pesan log lebih mudah ditemukan. Kemudian import android.util.Log dan tambahkan logging di bawah super.onCreate(savedInstanceState). Run ulang sehingga log dapat dicek pada logcat menggunakan tag:MainActivity. 


3. Terapkan Metode onStart() dan Metode-Metode lainnya
Metode yang dapat diubah dapat dicek pada Code -> Override Methods. Terlihat bahwa metode-metode activity lifecycle dapat di-override, sehingga tambahkan override dari metode-metode tersebut yang ditambahkan logging di bawah onCreate pada MainActivity.kt.
Ketika aplikasi di-run ulang terlihat akan ada tiga callback siklus yaitu:
- onCreate() saat sistem membuat aplikasi.
- onStart() membuat aplikasi terlihat di layar, tetapi pengguna belum dapat berinteraksi dengan aplikasi.
- onResume() membawa aplikasi ke latar depan, dan pengguna kini dapat berinteraksi dengannya.

4. Kasus Penggunaan 1: Membuka dan Menutup Aktivitas
Ketika tombol back pada device ditekan, maka terlihat bahwa tiga callback siklus dapat terlihat yaitu onPause(), onStop(), dan onDestroy(). Hal ini dikarenakan tombol back menyebabkan aktivitas (dan aplikasi) dihapus dari layar dan dipindahkan ke bagian belakang tumpukan aktivitas.

5. Kasus Penggunaan 2: Bernavigasi dari dan Kembali ke Aktivitas
Run ulang aplikasi lalu tekan tombol home pada device. Terlihat bahwa kali ini hanya onPause() dan onStop() yang terpanggil karena aplikasi tidak benar-benar tertutup dan berjalan di background. Saat onPause() dipanggil, aplikasi tidak lagi memiliki fokus. Setelah onStop(), aplikasi tidak lagi akan terlihat di layar.
Kemudian klik tombol persegi di kanan bawah device untuk kembali ke aplikasi.
Terlihat bahwa sekarang onRestart(), onStart(), dan onResume() terpanggil. onRestart() berfungsi sebagai pengganti onCreate(). Dalam kasus ini state meliputi jumlah variabel dari program akan tetap sama dengan sebelum ditekan home karena siklus masih terjadi pada aplikasi yang sama.

6. Kasus Penggunaan 3: Menyembunyikan Sebagian Aktivitas
Klik tombol share pada bagian kanan atas aplikasi Dessert Clicker, terlihat bahwa kali ini hanya onPause() yang terpanggil karena aktivitas masih terlihat sebagian tetapi tidak mendapat fokus pengguna (fokus pengguna berada pada tampilan share). Sebaliknya, onResume() akan terpanggil ketika aplikasi kembali mendapatkan fokus.

7. Mempelajari Perubahan Konfigurasi
Beberapa perubahan konfigurasi seperti rotasi layar menyebabkan onDestroy() dipanggil, menyebabkan aktivitas akan dihentikan dan dimulai ulang. Hal ini dapat menyebabkan kehilangan data pada aplikasi. Sebagai contoh pada aplikasi Dessert Clicker, jumlah Desserts sold dan Total Revenue akan ter-reset akibat rotasi layar tersebut.

8. Menggunakan rememberSaveable untuk menyimpan nilai di seluruh perubahan konfigurasi
Bug ini dapat diatasi dengan cara mengubah remember menjadi rememberSaveable untuk menyimpan nilai yang diinginkan.
Terlihat bahwa meskipun onDestroy() terpanggil akibat rotasi layar, jumlah variabel pada aplikasi dapat dipulihkan.

9. Perbandingan Hasil
Berikut adalah perbandingan aplikasi ketika hanya menggunakan remember saja dengan rememberSaveable.


Berikut adalah isi code MainActivity.kt:
MainActivity.kt

No comments:

Post a Comment

EAS PPB I - Aplikasi Alfamind

Nama       : Florentino Benedictus NRP          : 5025201222 Tahun     : 2024 Kelas        : Pemrograman Perangkat Bergerak I Link Desain An...