Mengatur siklus hidup activity dengan menerapkan callback method ( metode pemanggilan kembali) sangatlah krusial dalam pengembangan aplikasi yang kuat dan fleksibel. Siklus hidup dari sebuah activity terpengaruh secara langsung oleh hubungan activity tersebut dengan activity lain, tugasnya (task), dan tumpukan pada memory (back stack).
Sebuah activity bisa exist dalam tiga keaadan pokok, yaitu:
Jika sebuah activity di-stop atau di-pause, sistem menghapusnya dari memory dengan memintanya untuk berhenti (dengan memanggil method finish()
), atau cukup mematikan prosesnya. Ketika activity ingin dimulai lagi (setelah dihentikan atau dimatikan), maka activity tersebut harus di-create dari awal lagi.
Penerapan Siklus Hidup Callbacks (Pemangilan Kembali)
Ketika sebuah activity melakukan perubahah dari satu keadaan ke kedaaan yang lain, perubahan tersebut akan di beritahukan ke beragam metode callback. Semua metode callback berada dalam keadaan tersambung, sehingga kita bisa melakukan override agar metode-metode tersebut melakukan hal-hal yang sesuai untuk setiap perubahan keadaan yang terjadi. Kerangka activity berikut mengandung setiap metode dasar dari siklus hidup activity.
|
Catatan: Implementasi dari metode-metode siklus hidup, harus selalu memanggil implementasi dari superclass sebelum melakukan pekerjaan lain, sebagaimana ditunjukkan pada contoh di atas.
Secara garis besar, metode-metode ini mendefinisikan keseluruhan siklus hidup dari sebuah activity. Dengan menerapkan metode-metode ini, kita bisa memonitor tiga loop bersarang dalam siklus hidup activity:
- Keseluruhan waktu hidup dari sebuah activity terjadi diantara pemanggilan
onCreate()
sampai adanya pemanggilanonDestroy()
. Activity kita seharusnya melakukan pengaturan (setup) mengenai keadaan "global" (misalnya mendefinisikan layout) dalam metodeonCreate()
, dan melepaskan semua sumber daya pada pemanggilan metodeonDestroy()
. Misalnya jika activity kita melakukan pekerjaan di background berupa mendownload data dari internet, kita create pekerjaan tersebut dioncreate()
dan kemudian kita hentikan pekerjaan tersebut dionDestroy()
. - Waktu hidup terlihat dari sebuah activity terjadi antara pemanggilan
onStart()
dan pemanggilanonStop()
. Selama masa ini, user bisa melihat activity di layar, dan berinteraksi dengan activity tersebut. Misalnya,onStop()
dipanggil jika ada activity baru yang dijalankan dan activity yang ini tidak lagi terlihat. Diantara dua metode ini, kita bisa menjaga sumber daya yang dibutuhkan activity agar terlihat oleh user. Sebagai contoh, kita bisa melakukan register sebuahBroadcastReceiver
dionStart()
untuk me-monitor perubahan yang berdampak pada User Interface kita, dan kemudian kita bisa melakukan unregister padaonStop()
ketika user tidak lagi dapat melihat apa yang kita tampilkan. Sistem android memanggilonStart()
danonStop()
beberapa kali selama dalam siklus hidup activity, sebagaimana activity juga bisa terlihat atau tidak terlihat sesuai pilihan user. - Waktu hidup terdepan (foreground) dari sebuah activity terjadi diantara pemanggilan
onResume()
dan pemanggilanonPause()
. Selama masa ini, activity berada paling depan diantara semua activity di layar dan mendapatkan fokus dari user input. Sebuah activity bisa beberapa kali melakukan transisi keluar dan masuk pada keadaan foreground, misalnyaonPause()
dipanggil ketika perangkat masuk mode "sleep" atau ketika sebuah dialog tampil. Oleh karena activity sering keluar dan masuk dari keadaan ini, code pada kedua metode ini haruslah ringan agar tidak memberatkan dan memperlambat proses transisi sehingga membuat user menunggu.
Gambar berikut ini mengilustrasikan loop-loop (pengulangan) yang terjadi dan jalur yang mungkin diambil oleh activity pada setiap transisi antar keadaan. Gambar persegi mewakili metode callback yang bisa kita implementasikan untuk melakukan operasi ketika activity mengalami perubahan keadaan.
Gambar direferensikan dari http://developer.android.com/guide/topics/fundamentals/activities.htmlMetode callback dari siklus hidup activity dijelaskan lebih rinci pada tabel di bawah ini.
Metode (methode) | Deskripsi | Bisa dimatikan? | Selanjutnya |
---|---|---|---|
onCreate() |
Dipanggil pada saat activity pertama kali diciptakan. Di sinilah dimana seharusnya kita melakukan semua pengaturan static, misalnya menciptakan tampilan, mengikat data ke list, dan lain-lain. Metode ini mengoperkan "sebungkus" object yang mengandung keadaan sebelumnya dari activity jika keadaan tersebut disimpan. Metode ini selalu diikitu oleh onStart() . |
Tidak | onStart() |
onRestart() |
Dipanggil setelah activity dihentikan, tepat sebelum activity tersebut dijalankan lagi. Selalu diikuti oleh onStart() |
Tidak | onStart() |
onStart() |
Dipanggil tepat sebelum activity dapat terlihat oleh user. Diikuti dengan onResume() jika activity berada di foreground, atau onStop() jika activity menjadi tersembunyi. |
Tidak | onResume() atau onStop() |
onResume() |
Dipanggil tepat sebelum activity dapat berinteraksi dengan user. Pada keadaan ini, activity berada di tumpukan (stack) paling atas dari activity, dengan user input tertuju ke activity ini. Selalu diikuti dengan onPause() |
Tidak | onPause() |
onPause() |
Dipanggil ketika sistem mulai menjalankan activity lain. Metode ini biasanya digunakan untuk menjadikan data yang belum tersimpan menjadi data tetap, menghentikan animasi dan pekerjaan lain yang memerlukan memory, dan lain-lain. Activity ini harus melakukan pekerjaannya dengan cepat, karena activity lain tidak akan bisa dijalankan jika activity ini belum selesai. Diikuti dengan onResume() jika activity ingin kembali ke "depan", atau diikuti dengan onStop() jika activity ingin activity ini tidak terlihat oleh user. |
Ya | onResume() atau onStop() |
onStop() |
Dipanggil ketika activity tidak lagi terlihat oleh user. Hal ini bisa terjadi jika activity tersebut dihancurkan, atau activity lain (yang sudah ada ataupun yang baru) dijalankan dan menutupi activity yang ini. Bisa diikuti oleh onRestart() jika acitivity ini kembali untuk berinteraksi dengan user, atau diikuti dengan onDestroy() jika activity ini akan dimatikan. |
Ya | onRestart() atau onDestroy() |
onDestroy() |
Dipanggil sebelum activity dihancurkan. Iinilah panggilan terakhir yang akan diterima activity. Metode ini bisa dipanggil karena activity ini sudah selesai (beberapa orang memanggil finish() di dalamnya), atau karena sistem menghancurkan activity ini untuk menghemat ruang memory. Metode ini bisa dibedakan dari isFinish() . |
Ya | Tidak ada |
Pada kolom berlabel "Bisa dimatikan?" mengindikasikan bisa atau tidaknya sistem mematikan proses yang menaungi activity setiap saat setelah metode tersebut mengembalikan nilai, tanpa mengeksekusi baris kode lain dari activity. Ada tiga metode yang ditandai "Bisa" pada kolom ini, yaitu onPause()
, onStop()
, onDestroy()
. karena onPause()
adalah yang pertama dari tiga metode tersebut, ketika activity sudah diciptakan, onPause()
adalah metode yang pasti akan dipanggil sebelum proses bisa dimatikan (pada keadaan darurat yang mengharuskan sistem mengambil memory), kemudian onStop()
, namun onDestroy()
mungkin tidak dipanggil. Untuk itulah kita harus menggunakan onPause()
untuk menyimpan data tetap yang krusial (misalnya input dari user) di storage. Akan tetapi, kita harus selektif mengenai informasi apa saja yang harus dijaga selama onPause()
, karena jika ada prosedur yang di blok di metode ini, juga akan memblok transisi ke activity berikutnya dan memperlambat pemakaian user.
Metode yang bertanda "Tidak" pada kolom Bisa dimatikan melindungi proses yang menaungi activity agar tidak dimatikan setelah proses itu dipanggil. Dengan demikian, sebuah activiy bisa dimatikan setelah pemanggilan onPause()
mengembalikan nilai sampai pada pemanggilan metode onResume()
. Activity ini tidak bisa dimatikan lagi sebelum onPause()
dipanggil dan mengembalikan nilai.
Tweet
Tidak ada komentar:
Posting Komentar