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!
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
App is Running!
Kamu bisa berinteraksi penuh dengan layar ini.
Panggilan Masuk
Aplikasi di belakang kehilangan fokus.
Pilih Aksi User / Sistem
Alur Diagram
Logcat Output
Detail Penjelasan 7 Status Kritis (Analogi Teater)
Persiapan Ruang Ganti. Dijalankan cuma sekali di awal. Memori dialokasikan, UI XML dipasang (setContentView). Layar masih loading.
Jalan ke Panggung. UI mulai nampak di layar user, tapi tombol-tombol belum bisa merespon klik karena belum dapat fokus.
Beraksi! (Status Normal) Aplikasi jalan 100%, dapat fokus penuh. User berinteraksi (ngetik, scroll) di state ini.
Gangguan Ringan. Fokus terampas (misal ada pop-up konfirmasi atau telepon masuk). UI masih terlihat mengintip transparan.
Tirai Tutup (Background). User memencet tombol Home/Buka WA. Aplikasi sama sekali tidak terlihat di layar HP.
Dibangunkan. Rute khusus kalau user buka aplikasi kembali dari background (setelah onStop). Menjembatani jalan ke onStart lagi.
Pertunjukan Bubar. Aplikasi di-swipe up (kill). Activity dibongkar, memori dibersihkan. Selesai.
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");
}
}