Tugas 10 - Aplikasi Dessert Clicker - Activity Lifecycle
Nama : Abiyu Ramadhan Kiesly
NRP : 5025221123
Kelas : Pemrograman Perangkat Bergerak G
Link Github: Link Repositori Github
Activity Lifecycle dan rememberSaveable di Android
🔄 Activity Lifecycle
Activity Lifecycle adalah serangkaian tahapan yang dilalui oleh sebuah Activity dalam Android dari saat dibuat hingga dihancurkan. Lifecycle ini memungkinkan developer untuk mengelola resource dan state aplikasi dengan efisien pada berbagai kondisi seperti rotasi layar, perpindahan aplikasi, atau ketika aplikasi berjalan di background.
📋 Metode Utama dalam Kode
Dari kode MainActivity yang diberikan, terdapat 6 metode lifecycle utama:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
Log.d(TAG, "onCreate Called")
// Setup UI content...
}
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart Called")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume Called")
}
override fun onRestart() {
super.onRestart()
Log.d(TAG, "onRestart Called")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause Called")
}
override fun onStop() {
super.onStop()
Log.d(TAG, "onStop Called")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy Called")
}
}
Dipanggil saat Activity pertama kali dibuat. Digunakan untuk inisialisasi dasar seperti setup UI dan binding data.
Dipanggil ketika Activity mulai terlihat oleh user, namun belum bisa berinteraksi.
Dipanggil ketika Activity siap berinteraksi dengan user. Activity berada di foreground dan menerima input user.
Dipanggil ketika Activity kehilangan focus tetapi masih terlihat sebagian (misalnya ada dialog atau Activity lain yang semi-transparan).
Dipanggil ketika Activity tidak lagi terlihat oleh user. Activity berpindah ke background.
Dipanggil sebelum Activity dihancurkan. Digunakan untuk cleanup resource dan mencegah memory leak.
Dipanggil ketika Activity di-restart setelah di-stop. Biasanya diikuti oleh onStart().
💾 Fungsi rememberSaveable
rememberSaveable adalah fungsi Compose yang digunakan untuk menyimpan state yang dapat bertahan melalui configuration changes seperti rotasi layar atau process death.
Dalam kode DessertClicker, rememberSaveable digunakan untuk menyimpan:
@Composable
private fun DessertClickerApp(
desserts: List<Dessert>
) {
var revenue by rememberSaveable { mutableStateOf(0) }
var dessertsSold by rememberSaveable { mutableStateOf(0) }
val currentDessertIndex by rememberSaveable { mutableStateOf(0) }
var currentDessertPrice by rememberSaveable {
mutableStateOf(desserts[currentDessertIndex].price)
}
var currentDessertImageId by rememberSaveable {
mutableStateOf(desserts[currentDessertIndex].imageId)
}
// UI Implementation...
}
Variabel-variabel yang disimpan:
revenue- Total pendapatan dari penjualan dessertdessertsSold- Jumlah dessert yang telah terjualcurrentDessertIndex- Index dessert yang sedang aktifcurrentDessertPrice- Harga dessert saat inicurrentDessertImageId- ID gambar dessert yang ditampilkan
🔍 Perbedaan dengan remember
- remember: Hanya menyimpan state selama Composable masih aktif. Hilang saat configuration change.
- rememberSaveable: Menyimpan state bahkan setelah configuration change dengan menggunakan Bundle mechanism dari Android.
Catatan Penting:
- Logging lifecycle methods membantu developer memahami kapan setiap tahap lifecycle dipanggil
- Penggunaan
rememberSaveablememastikan data penting tidak hilang saat configuration change - Kombinasi kedua konsep ini menciptakan aplikasi yang robust dan user-friendly
Komentar
Posting Komentar