Aplikasi Dessert Clicker - Activity Lifecycle
Moch. Avin (5025221061)
Pemrograman Perangkat Bergerak - PPB GLink Repo Github: https://github.com/mochavin/ppb-dessert-clicker

Activity Lifecycle
Activity Lifecycle dalam Android adalah siklus hidup dari sebuah Activity, yaitu urutan status atau keadaan yang dialami oleh sebuah activity dari saat dibuat hingga dihancurkan. Ini penting untuk mengelola resource, menyimpan data sementara, dan menghindari crash.
Berikut adalah penjelasan setiap metode utama dalam Activity Lifecycle:
1. onCreate()
-
Dipanggil saat activity pertama kali dibuat.
-
Cocok untuk inisialisasi (misal: layout, variabel, listener).
-
Contoh:
setContentView(R.layout.main_activity);
2. onStart()
-
Dipanggil saat activity akan terlihat oleh pengguna.
-
Activity belum berada di latar depan, tapi sudah “hidup”.
3. onResume()
-
Dipanggil saat activity mulai berinteraksi dengan pengguna.
-
Ini adalah status aktif (foreground).
4. onPause()
-
Dipanggil saat activity sebagian tidak terlihat (misal: dialog muncul).
-
Cocok untuk pause animasi, simpan data sementara, dll.
5. onStop()
-
Dipanggil saat activity tidak terlihat sama sekali (ditimpa oleh activity lain).
-
Cocok untuk melepas resource berat, misal koneksi jaringan.
6. onRestart()
-
Dipanggil saat activity yang telah dihentikan (
onStop) akan dimunculkan kembali.
7. onDestroy()
-
Dipanggil sebelum activity dihancurkan permanen, baik karena ditutup atau sistem membebaskan memori.
private const val TAG = "MainActivity"
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
Log.d(TAG, "onCreate Called")
setContent {
DessertClickerTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier
.fillMaxSize()
.statusBarsPadding(),
) {
DessertClickerApp(desserts = Datasource.dessertList)
}
}
}
}
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")
}
}
Kode tersebut adalah implementasi Activity Lifecycle pada MainActivity menggunakan Jetpack Compose. Tujuannya adalah melacak siklus hidup activity lewat log.
Penjelasan
-
TAG = "MainActivity": untuk identifikasi log. -
onCreate(): inisialisasi UI dengan Compose (DessertClickerApp), log:"onCreate Called". -
onStart(),onResume(): dipanggil saat activity mulai terlihat dan siap digunakan. -
onPause(),onStop(): dipanggil saat activity mulai tidak terlihat atau berpindah ke background. -
onRestart(): saat activity kembali darionStop(). -
onDestroy(): saat activity dihancurkan.
Gunakan remember Saveable
rememberSaveable digunakan untuk menyimpan state saat terjadi configuration change, seperti rotasi layar. Berbeda dengan remember yang hanya bertahan selama recomposition, rememberSaveable juga menyimpan data saat activity dihancurkan dan dibuat ulang oleh sistem.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)
}



Comments
Post a Comment