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).

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

Activity launched
onCreate()
onStart()
onResume()
Activity running
onPause()
App process killed
onStop()
onRestart()
onDestroy()
Activity shut down
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");
    }
}