Pertemuan 4

Android Activity &
Lifecycle Diagram 🧬

Memahami urutan eksekusi memori dan layar aplikasi dari status "Lahir", di-Pause, kena Kill sistem, sampai "Wafat".

1. Konsep Dasar & 4 Tujuan Lifecycle

Sederhananya, Activity adalah satu halaman layar tunggal di Android yang memiliki User Interface (UI). Seperti lembaran dalam buku, setiap kamu berpindah dari "Layar Beranda" ke "Layar Profil", kamu sedang menutup Activity lama dan membuka Activity baru.

Mengapa Kita Harus Mengatur Lifecycle?

Ada 4 poin harapan utama dari sebuah aplikasi Android yang baik:

  • Tidak Crash: Aplikasi aman ketika menerima panggilan masuk atau user mendadak membuka aplikasi lain.
  • Hemat Daya: Tidak mengkonsumsi power baterai secara berlebihan saat aplikasi tidak tampil di layar.
  • Menjaga Data: Tidak kehilangan data user ketika user menutup aplikasi (kembali ke Home) dan membukanya lagi.
  • Tahan Banting Rotasi: Tidak crash atau hilang input form apabila layar HP dirotasi (dari Portrait ke Landscape).

Menyelamatkan Data Rotasi dengan "Bundle"

Saat HP dirotasi (Portrait ke Landscape), sistem Android akan membunuh (onDestroy) dan merakit ulang (onCreate) layar tersebut. Agar data ketikan user tidak hilang, kita gunakan Bundle lewat fungsi onSaveInstanceState().

// 1. Selamatkan data ke Bundle sebelum layar dirotasi
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("NAMA_YANG_DIKETIK", inputNama.getText().toString());
}

// 2. Ambil kembali data saat layar lahir ulang (di onCreate)
if (savedInstanceState != null) {
    String aman = savedInstanceState.getString("NAMA_YANG_DIKETIK");
    inputNama.setText(aman);
}

2. Diagram Activity Lifecycle Resmi

Sama seperti manusia, Activity di Android punya siklus hidup. Siklus ini dikendalikan sepenuhnya oleh sistem operasi Android melalui mekanisme Callback Methods. Pelajari diagram dari dokumentasi standar di bawah ini, lalu kita akan simulasikan langsung pergerakannya di section selanjutnya!

[Gambar Diagram Activity Lifecycle Android]

Sumber Referensi: GeeksforGeeks / Android Documentation

Interactive Lifecycle Simulator

Klik tombol-tombol aksi pada kontrol di bawah ini. Perhatikan bagaimana status diagram menyala mengikuti alur panah, dan perhatikan apa yang dicetak oleh Logcat Android secara real-time!

Device Simulator

My App

Main Activity

App is Running!

Kamu bisa berinteraksi penuh dengan layar ini.

Panggilan Masuk

Aplikasi di belakang kehilangan fokus.

Pilih Aksi User / Sistem


Alur Diagram

User navigates to the activity Another activity comes into the foreground The activity is no longer visible The activity is finishing or being destroyed by the system User returns to the activity User navigates to the activity Apps with higher priority need memory
Activity launched
onCreate()
onStart()
onResume()
Activity running
onPause()
onStop()
onDestroy()
Activity shut down
App process killed
onRestart()
Tunggu instruksi...

Logcat Output

Level: Debug | Tag: LIFECYCLE
--------- beginning of main

Detail Penjelasan 7 Status Kritis (Analogi Teater)

onCreate()

Persiapan Ruang Ganti. Dijalankan cuma sekali di awal. Memori dialokasikan, UI XML dipasang (setContentView). Layar masih loading.

onStart()

Jalan ke Panggung. UI mulai nampak di layar user, tapi tombol-tombol belum bisa merespon klik karena belum dapat fokus.

onResume()

Beraksi! (Status Normal) Aplikasi jalan 100%, dapat fokus penuh. User berinteraksi (ngetik, scroll) di state ini.

onPause()

Gangguan Ringan. Fokus terampas (misal ada pop-up konfirmasi atau telepon masuk). UI masih terlihat mengintip transparan.

onStop()

Tirai Tutup (Background). User memencet tombol Home/Buka WA. Aplikasi sama sekali tidak terlihat di layar HP.

onRestart()

Dibangunkan. Rute khusus kalau user buka aplikasi kembali dari background (setelah onStop). Menjembatani jalan ke onStart lagi.

onDestroy()

Pertunjukan Bubar. Aplikasi di-swipe up (kill). Activity dibongkar, memori dibersihkan. Selesai.

App Process Killed (Kematian Sepihak)

Kejadian brutal saat aplikasi lagi nganggur di background (onStop/onPause), tiba-tiba Android kehabisan RAM. Sistem akan menculik memori aplikasimu tanpa memanggil onDestroy. Kalau user buka lagi, dia harus ngulang dari awal (onCreate).

4. Hands-on: Mata-Matai Kode Aslimu!

Sekarang giliranmu membuktikannya di Android Studio sungguhan. Buka file MainActivity.java, lalu sisipkan fungsi-fungsi siklus hidup ini ke dalam class utamanya!

package example.com.latihan7activity;

import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    String status = "Android :";

    // Method dipanggil ketika activity pertama dimulai
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(status, "onCreate() event");
    }

    // Method dipanggil ketika activity mulai terlihat oleh user
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(status, "onStart() event");
    }

    // Method dipanggil ketika activity mulai berinteraksi dengan user
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(status, "onResume() event");
    }

    // Method dipanggil ketika activity berhenti sementara
    @Override
    protected void onPause() {
        super.onPause();
        Log.d(status, "onPause() event");
    }

    // Method dipanggil ketika activity sudah tidak terlihat pada user
    @Override
    protected void onStop() {
        super.onStop();
        Log.d(status, "onStop() event");
    }

    // Method dipanggil sebelum activity dimatikan
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(status, "onDestroy() event");
    }
}