Tugas 10 - PPB G - 5025221005

Laporan Tugas 10: Android Activity Lifecycle dengan Kotlin Compose

๐Ÿš€ Laporan Tugas 10

Android Activity Lifecycle dengan Kotlin Compose
Nama: Nabilah Atika Rahma
NRP: 5025221005
Mata Kuliah: Pemrograman Perangkat Bergerak G
Tahun: 2025
Android Studio Kotlin Jetpack Compose Activity Lifecycle
View on GitHub

๐Ÿ“ฑPendahuluan

Activity Lifecycle merupakan konsep fundamental dalam pengembangan aplikasi Android yang mengatur bagaimana aktivitas berperilaku saat mengalami berbagai perubahan state. Dalam tugas ini, saya mempelajari implementasi Activity Lifecycle menggunakan Kotlin dan Jetpack Compose melalui codelab resmi dari Android Developers.

๐ŸŽฏ Tujuan Pembelajaran: Memahami dan mengimplementasikan Activity Lifecycle methods dalam aplikasi Android modern menggunakan Jetpack Compose

๐Ÿ”„Konsep Activity Lifecycle

Activity Lifecycle terdiri dari beberapa state dan callback methods yang dipanggil sistem Android saat activity mengalami perubahan kondisi:

onCreate()
onStart()
onResume()


onPause()
onStop()
onDestroy()

๐Ÿ—️ Tahapan Lifecycle:

Diagram Activity Lifecycle
Diagram resmi Activity Lifecycle dari dokumentasi Android
  • onCreate(): Dipanggil saat activity pertama kali dibuat
  • onStart(): Activity menjadi visible untuk user
  • onResume(): Activity siap untuk berinteraksi dengan user
  • onPause(): Activity kehilangan focus tetapi masih visible
  • onStop(): Activity tidak lagi visible untuk user
  • onDestroy(): Activity dihancurkan dari memory

๐Ÿ’ปImplementasi Kode

๐ŸŽจ Setup Jetpack Compose Activity

Pertama, saya membuat ComponentActivity dengan setup dasar Compose:

class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("MainActivity", "onCreate Called") setContent { DessertClickerTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { DessertClickerApp() } } } } }

๐Ÿ” Override Lifecycle Methods

Kemudian menambahkan override untuk semua lifecycle methods dengan logging:

override fun onStart() { super.onStart() Log.d("MainActivity", "onStart Called") } override fun onResume() { super.onResume() Log.d("MainActivity", "onResume Called") } override fun onPause() { super.onPause() Log.d("MainActivity", "onPause Called") } override fun onStop() { super.onStop() Log.d("MainActivity", "onStop Called") } override fun onDestroy() { super.onDestroy() Log.d("MainActivity", "onDestroy Called") }

๐ŸŽฎ Compose UI Implementation

Implementasi UI menggunakan Jetpack Compose dengan state management:

@Composable fun DessertClickerApp() { var revenue by remember { mutableStateOf(0) } var dessertsSold by remember { mutableStateOf(0) } val currentDessert = determineDessertToShow(desserts, dessertsSold) DessertClickerScreen( revenue = revenue, dessertsSold = dessertsSold, dessertImageId = currentDessert.imageId, onDessertClicked = { revenue += currentDessert.price dessertsSold++ } ) }

๐ŸงชPengujian dan Observasi

๐Ÿ“Š Skenario Testing

Saya melakukan berbagai skenario testing untuk mengamati perilaku lifecycle:

๐Ÿ” Observasi Hasil:

  • App Launch: onCreate() → onStart() → onResume()
  • Home Button: onPause() → onStop()
  • Back to App: onStart() → onResume()
  • Rotate Device: onPause() → onStop() → onDestroy() → onCreate() → onStart() → onResume()
  • App Close: onPause() → onStop() → onDestroy()
๐Ÿ’ก Insight Penting: Configuration changes (seperti rotasi) menyebabkan activity di-destroy dan di-create ulang, sehingga state management menjadi crucial!

๐Ÿ’พState Management & Data Persistence

๐Ÿ”„ rememberSaveable Implementation

Untuk mengatasi kehilangan state saat configuration changes, saya menggunakan rememberSaveable:

@Composable fun DessertClickerApp() { var revenue by rememberSaveable { mutableStateOf(0) } var dessertsSold by rememberSaveable { mutableStateOf(0) } // UI implementation }

Dengan implementasi rememberSaveable, aplikasi berhasil mempertahankan data revenue dan desserts sold bahkan ketika mengalami configuration changes.

Kesimpulan

Melalui codelab ini, saya berhasil memahami konsep fundamental Activity Lifecycle dalam pengembangan Android. Implementasi menggunakan Jetpack Compose memberikan pengalaman development yang modern dan efisien.

๐Ÿ”‘ Key Takeaways:
• Activity Lifecycle adalah foundation penting dalam Android development
• State management membutuhkan perhatian khusus untuk UX yang optimal
• Jetpack Compose menyediakan tools modern untuk state persistence
• Testing dan logging essential untuk understanding app behavior

Knowledge ini akan sangat berguna untuk pengembangan aplikasi Android yang lebih robust dan user-friendly di masa depan. Pemahaman lifecycle behavior akan membantu dalam optimasi performa dan pengelolaan resource aplikasi.

Comments

Popular posts from this blog

Tugas Week 2 - PPB G - 5025221005

Tugas 11 - PPB G - 5025221005

Tugas 9 - PPB G - 5025221005