Memahami Activity Lifecycle di Android
Bagus Aji Santoso 11 Agustus 2017
Selama aplikasi berjalan, sebuah Activity dalam melalui salah satu dari keempat status berikut:
Status | Deskripsi |
---|---|
Running | Activity terlihat dan dapat berinteraksi dengan pengguna |
Paused | Activity masih terlihat, tapi tidak dapat berinteraksi dengan pengguna |
Stopped | Activity sudah tidak terlihat tapi masih ada di memory |
Killed | Activity sudah tidak terlihat dan dihapus dari sistem karena kebutuhan memory atau method finish() dipanggil. |
Activity Lifecycle
Diagram berikut ini menampilkan status Activity dengan method yang akan dipanggil sebelum memasuki masing-masing status. Tiap kotak menampilkan method yang dipanggil.
Berikut penjelasan fungsi dari tiap method di atas:
-
onCreate()
Di-method ini Activity sudah dimulai tapi belum terlihat oleh pengguna. Inisialisasi sebagian besar dimulai di sini. Misalnya memanggail
setContentView()
untuk membaca layout, membaca View, dll. -
onStart()
Activity sudah terlihat tapi belum bisa berinteraksi. Method ini jarang dipakai, tapi bisa sangat berguna untuk mendaftarkan sebuah BroadcastReceiver untuk mengamati perubahan yang dapat mempengaruhi UI.
-
onResume()
Activity sudah terlihat dan pengguna sudah dapat berinteraksi. Di sini adalah tempat terbaik untuk menjalankan animasi, membuka akses seperti camera, mengupdate UI, dll.
-
onPause()
Kebalikan dari
onResume()
. Activity sudah akan bersiap-siap meninggalkan layar (masih terlihat) dan sudah tidak berinteraksi dengan pengguna. Biasanya bila perlu melakukan undo untuk pekerjaan yang dilakukan dionResume()
kita lakukan di sini. -
onStop()
Kebalikan dari
onStart()
Activity sudah tidak terlihat. Biasanya kita melakukan undo untuk pekerjaan yang dilakukan di dalamonStart()
. -
onDestroy()
Kebalikan dari
onCreate()
. Method ini dapat terpanggil karena memanggil methodfinish()
atau karena sistem membutuhkan memori lebih. Di dalamonDestroy()
kita biasanya membersihkan proses-proses yang ada di belakang layar. Misalnya pengunduhan data dari internet yang mungkin masih berjalan jika tidak dihentikan dionDestroy()
. -
onRestart()
Dipanggil saat activity sudah melalui
onStop()
tapi akan diaktifkan lagi. Method ini jarang di implementasi.
Menangani Perubahan Konfigurasi
Siklus hidup Activity sangat penting untuk dipahami karena setiap kali Activity meninggalkan layar, Activity tersebut dapat dihapus dari memori. Saat sebuah Activity dihapus dari memori lalu pengguna ingin kembali ke Activity tersebut, Activity akan dibuat ulang dan method-method lifecycle-nya akan dipanggil lagi. Activity juga akan dibuat ulang saat terjadi perubahan orientasi layar (dari portrait ke landscape). Agar aplikasi dapat melewati proses pembuatan Activity ulang dalam berbagai situasi, pastikan untuk menangani perubahan konfigurasi yang terjadi.
Memanggil Super Class
Saat meng-override suatu method, kita mungkin perlu memanggil superclass-nya. Aturannya saat meng-implement suatu method, kita panggil terlebih dahulu superclass-nya:
public void onCreate() {
super.onCreate();
// keperluan lain lakukan setelah pemanggilan superclass
// setContentView(R.layout.main);
}
Saat de-inisialisasi atau pemanggilan method onPause, onStop, atau onDestroy kita lakukan dulu tugas yang diperlukan baru panggil superclass-nya:
public void onPause() {
// Lakukan dulu keperluan disini baru panggil superclass
// LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}
Sumber: Activity Lifecycle