Memahami Activity Lifecycle di Android

Bagus Aji Santoso 11 Agustus 2017

Memahami Activity Lifecycle di Android

Selama aplikasi berjalan, sebuah Activity dalam melalui salah satu dari keempat status berikut:

StatusDeskripsi
RunningActivity terlihat dan dapat berinteraksi dengan pengguna
PausedActivity masih terlihat, tapi tidak dapat berinteraksi dengan pengguna
StoppedActivity sudah tidak terlihat tapi masih ada di memory
KilledActivity 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.

Image

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 di onResume() kita lakukan di sini.

  • onStop()

    Kebalikan dari onStart() Activity sudah tidak terlihat. Biasanya kita melakukan undo untuk pekerjaan yang dilakukan di dalam onStart().

  • onDestroy()

    Kebalikan dari onCreate(). Method ini dapat terpanggil karena memanggil method finish() atau karena sistem membutuhkan memori lebih. Di dalam onDestroy() kita biasanya membersihkan proses-proses yang ada di belakang layar. Misalnya pengunduhan data dari internet yang mungkin masih berjalan jika tidak dihentikan di onDestroy().

  • 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