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")
    }
}
onCreate()

Dipanggil saat Activity pertama kali dibuat. Digunakan untuk inisialisasi dasar seperti setup UI dan binding data.

onStart()

Dipanggil ketika Activity mulai terlihat oleh user, namun belum bisa berinteraksi.

onResume()

Dipanggil ketika Activity siap berinteraksi dengan user. Activity berada di foreground dan menerima input user.

onPause()

Dipanggil ketika Activity kehilangan focus tetapi masih terlihat sebagian (misalnya ada dialog atau Activity lain yang semi-transparan).

onStop()

Dipanggil ketika Activity tidak lagi terlihat oleh user. Activity berpindah ke background.

onDestroy()

Dipanggil sebelum Activity dihancurkan. Digunakan untuk cleanup resource dan mencegah memory leak.

onRestart()

Dipanggil ketika Activity di-restart setelah di-stop. Biasanya diikuti oleh onStart().

Ketika pertama kali running

Ketika back button di click:

Ketika device rotasi akan recreate activity:



💾 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 dessert
  • dessertsSold - Jumlah dessert yang telah terjual
  • currentDessertIndex - Index dessert yang sedang aktif
  • currentDessertPrice - Harga dessert saat ini
  • currentDessertImageId - 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 rememberSaveable memastikan data penting tidak hilang saat configuration change
  • Kombinasi kedua konsep ini menciptakan aplikasi yang robust dan user-friendly

Komentar

Postingan populer dari blog ini

Pengumpulan EAS - PPB G - PerpustakaanKu

Tugas Pertemuan 4 - Membuat Aplikasi Roller