Activity — apa itu, layar aplikasi di Android dan Lifecycle-nya

Penulis: IT Sectr Diterbitkan: 2026-02-22 Waktu membaca: 7 mnt

Activity — komponen dasar aplikasi Android yang mewakili satu layar dengan antarmuka pengguna. Sistem mengelola layar melalui siklus hidup yang ketat — callback onCreate, onResume dan onDestroy. Setiap Activity dideklarasikan di AndroidManifest.xml dan diluncurkan melalui Intent. Baca lebih lanjut tentang sejarah Android di dokumentasi resmi Google.

Poin utama

  • Activity — komponen Android yang mewakili satu layar dengan UI. Dikelola melalui Lifecycle
  • Siklus hidup mencakup 6 callback: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • Intent — mekanisme untuk meluncurkan Activity dan mentransfer data antar layar
  • Manifest — pendaftaran wajib setiap Activity di AndroidManifest.xml
  • ViewModel — komponen Jetpack untuk menyimpan data saat Activity dibuat ulang

Apa itu Activity?

Activity — komponen kunci aplikasi Android yang menyediakan jendela untuk interaksi dengan pengguna. Setiap Activity mengelola layar terpisah: daftar tugas, formulir masuk, tampilan foto. Sistem Android membuat Activity berdasarkan permintaan dan menghancurkannya ketika memori diperlukan untuk aplikasi lain.

Activity pertama kali muncul di Android 1.0 (2008) dan tetap menjadi blok bangunan utama antarmuka. Menurut Google (2026), 98% aplikasi di Google Play mengandung setidaknya satu Activity. Dalam arsitektur modern, Google merekomendasikan satu Activity dengan banyak Fragment, namun aplikasi multi-layar klasik tetap menjadi praktik yang umum.

Activity stack (back stack) — tumpukan tugas yang menyimpan riwayat navigasi. Ketika pengguna menekan „Kembali“, Activity saat ini dihancurkan dan yang sebelumnya dipulihkan. Sistem mengelola tumpukan secara otomatis, tetapi pengembang dapat mengontrol perilaku melalui launchMode dan flag Intent.

Siklus hidup Activity

Siklus hidup Activity — kumpulan status dan callback yang dilalui layar dari pembuatan hingga penghancuran. Memahami Lifecycle sangat penting: bekerja dengan status yang salah menyebabkan kebocoran memori, kehilangan data, dan crash aplikasi.

Sistem Android memanggil callback dalam urutan yang ketat. Pengembang menimpa metode yang diperlukan untuk menginisialisasi sumber daya, menyimpan data, dan membebaskan memori. Setiap callback memiliki pasangan: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause.

CallbackTujuanTindakan pengembang
onCreateDipanggil saat Activity dibuatInisialisasi UI, berlangganan ViewModel
onStartActivity menjadi terlihatMemulai animasi, kamera, GPS
onResumeActivity mendapatkan fokus inputMelanjutkan video, timer
onPauseActivity kehilangan fokusMenyimpan draf, menghentikan animasi
onStopActivity disembunyikan oleh layar lainMembebaskan sumber daya berat
onDestroyActivity dihancurkanMembersihkan langganan, Closeable

Status Activity

Empat status Activity dibedakan: Running (onResume aktif), Paused (terlihat tetapi tanpa fokus), Stopped (tidak terlihat), Destroyed (dihancurkan). Sistem dapat mematikan Activity dalam status Stopped saat kekurangan memori — data harus disimpan di onSaveInstanceState.

Metode siklus hidup: onCreate, onStart, onResume

Mari kita bahas tiga metode kunci dari siklus hidup Activity dengan contoh di Kotlin. onCreate — titik masuk, dipanggil sekali. Di sini terjadi pengikatan layout melalui setContentView, inisialisasi RecyclerView, berlangganan LiveData. onStart — Activity menjadi terlihat bagi pengguna. onResume — Activity mendapatkan fokus dan siap untuk berinteraksi.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val recyclerView = findViewById<RecyclerView>(R.id.rv_items)
        recyclerView.layoutManager = LinearLayoutManager(this)
        loadItems()
    }

    override fun onStart() {
        super.onStart()
        startLocationUpdates()
    }

    override fun onResume() {
        super.onResume()
        resumeVideoPlayer()
    }
}

Dalam contoh, onCreate menginisialisasi RecyclerView dan memuat data. onStart memulai pembaruan geolokasi — sumber daya yang hanya boleh bekerja saat layar terlihat. onResume melanjutkan video yang dihentikan di onPause. Pemisahan seperti ini mencegah pekerjaan yang tidak perlu di latar belakang.

Mendeklarasikan Activity di AndroidManifest.xml

Setiap Activity harus dideklarasikan di file AndroidManifest.xml. Tanpa pendaftaran, sistem tidak akan menemukan layar dan akan melempar pengecualian ActivityNotFoundException. Di manifes ditentukan nama kelas, tema, orientasi, launchMode dan filter Intent.

xml
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:theme="@style/Theme.MyApp">

    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".DetailActivity"
        android:parentActivityName=".MainActivity" />
</application>

Bendera exported menentukan apakah aplikasi lain dapat meluncurkan Activity. Untuk layar utama exported=true, untuk layar internal — false. Atribut parentActivityName mengaktifkan navigasi standar „Ke atas“ (Up Navigation).

Meluncurkan Activity melalui Intent

Intent — objek yang menggambarkan tindakan yang akan dilakukan. Dalam konteks Activity, Intent digunakan untuk meluncurkan layar lain dengan transfer data. Intent bisa eksplisit (menunjuk ke kelas tertentu) dan implisit (menunjuk ke tindakan, sistem memilih komponen yang sesuai).

kotlin
// Intent eksplisit — meluncurkan DetailActivity dengan data
val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("item_id", itemId)
    putExtra("item_name", itemName)
}
startActivity(intent)

// Menerima data di DetailActivity
val itemId = intent.getLongExtra("item_id", 0L)
val itemName = intent.getStringExtra("item_name") ?: ""

Untuk menerima hasil dari Activity yang diluncurkan digunakan Activity Result API, yang menggantikan startActivityForResult yang sudah usang. API baru ini type-safe, deklaratif, dan bekerja dengan Jetpack Compose.

kotlin
private val getResult = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val data = result.data?.getStringExtra("result_key")
    }
}

fun openPicker() {
    val intent = Intent(this, PickerActivity::class.java)
    getResult.launch(intent)
}

Menyimpan status saat dibuat ulang

Saat rotasi layar atau perubahan konfigurasi, Android membuat ulang Activity — secara berurutan memanggil onDestroy dan onCreate. Tanpa menyimpan status, pengguna kehilangan data yang dimasukkan, posisi scroll, dan elemen yang dipilih. Untuk mengatasi masalah ini Android menyediakan dua mekanisme: onSaveInstanceState dan ViewModel.

onSaveInstanceState menyimpan data sederhana di Bundle sebelum memanggil onDestroy. ViewModel dari Jetpack tahan terhadap pembuatan ulang Activity dan menyimpan data di memori, yang lebih efisien untuk objek kompleks dan permintaan jaringan.

kotlin
class MainActivity : AppCompatActivity() {

    private val viewModel: MainViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // ViewModel secara otomatis menyimpan data
        viewModel.items.observe(this) { items ->
            updateAdapter(items)
        }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("scroll_position", recyclerView.computeVerticalScrollOffset())
    }
}

Arsitektur Single Activity dan Jetpack

Pendekatan modern Google — arsitektur Single Activity dengan satu Activity dan banyak Fragment. Aplikasi menggunakan satu MainActivity, dan seluruh navigasi dilakukan oleh Navigation Component melalui NavHostFragment. Keuntungan: navigasi terpusat, ViewModel bersama per layar, kerja yang benar dengan Deep Links.

Jetpack Navigation Component mengotomatiskan kerja dengan back stack, animasi transisi, dan pengiriman argumen. NavHostFragment ditempatkan di layout Activity, dan grafik navigasi (NavGraph) menggambarkan semua layar dan koneksi di antaranya. Pendekatan ini direkomendasikan oleh Google untuk proyek baru dan sesuai dengan prinsip Material Design.

kotlin
class MainActivity : AppCompatActivity() {

    private val navController by lazy {
        findViewById<NavHostFragment>(R.id.nav_host_fragment)
            .navController
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Konfigurasi NavigationUI untuk AppBar
        setupActionBarWithNavController(navController)
    }

    override fun onSupportNavigateUp() = 
        navController.navigateUp() || super.onSupportNavigateUp()
}

Pertanyaan yang sering diajukan

Apa perbedaan Activity dengan Fragment?

Activity — layar aplikasi penuh dengan siklus hidupnya sendiri. Fragment — bagian dari UI di dalam Activity yang tahan terhadap pembuatan ulang Activity dan bergantung pada Lifecycle-nya. Activity wajib, Fragment opsional.

Berapa banyak Activity dalam satu aplikasi?

Tidak ada batasan. Setiap layar biasanya mewakili Activity terpisah. Untuk aplikasi sederhana satu cukup, untuk multi-layar — dari 5 hingga 20. Google merekomendasikan satu Activity dengan banyak Fragment.

Apa itu launchMode di Activity?

launchMode menentukan bagaimana Activity dibuat di tumpukan tugas. Empat mode: standard (instance baru dibuat), singleTop, singleTask (satu instance dalam tugas) dan singleInstance (tugas terisolasi). Mode diatur di AndroidManifest.xml.

Bagaimana mentransfer data antar Activity?

Melalui Intent — objek dengan ekstra (putExtra) yang menampung primitif, string, Parcelable atau Serializable. Untuk umpan balik digunakan Activity Result API — pengganti modern type-safe untuk startActivityForResult.

Apa itu Configuration Change di Android?

Configuration Change — pembuatan ulang Activity saat perubahan konfigurasi (rotasi layar, perubahan bahasa, keyboard). Sistem memanggil onDestroy → onCreate. Untuk menyimpan data digunakan onSaveInstanceState atau ViewModel dari Jetpack.

Kesimpulan

  • Activity — komponen dasar Android yang mewakili satu layar dengan antarmuka pengguna dan dikelola melalui siklus hidup
  • Siklus hidup terdiri dari enam callback: onCreate, onStart, onResume, onPause, onStop, onDestroy — masing-masing memiliki tujuan ketat
  • Intent memastikan peluncuran Activity dan transfer data antar layar melalui panggilan eksplisit dan implisit
  • AndroidManifest.xml mewajibkan pendaftaran setiap Activity dengan nama, tema, orientasi dan filter
  • ViewModel dari Jetpack menyimpan data saat Activity dibuat ulang, menggantikan penyimpanan manual di onSaveInstanceState
  • Arsitektur Single Activity dengan Navigation Component — standar modern yang direkomendasikan Google untuk proyek Android
  • launchMode mengelola perilaku Activity di tumpukan tugas: dari standard hingga singleInstance untuk layar terisolasi

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga