Tentang Lifecycle Aplikasi Android

Disini saya mau berbagi hasil kesimpulan yang saya rangkum dalam memahami daur hidup aplikasi di Android. Di awali ketertarikan menjadi Android Developer dan sudah mencoba membuat project pertama di Android Studio, wajib hukumnya memahami bagaimana cara kerja sistem Android dibelakangnya. Daur hidup aplikasi ini biasanya dinamakan dengan Android Application Lifecycle. Karena penjelasan ini agak panjang, jadi siapain segelas minum dan makanan ringan yaa guys.. heheh 😀

Dari berbegai sumber informasi yang saya kumpulkan, hal ini menjadi sangat penting bagi setiap Android Developer pemula, karena dengan mengetahui lifecycle / daur hidup aplikasi, kita bisa dengan mudah merancang dan mengembangkan aplikasi di Android nantinya. Gampangnya gini, seperti aplikasi chat di samping, kita bisa menambahkan berpindah dari satu fitur ke fitur lainnya seperti menambah chatting atau melihat profil lengkap sesorang. Saat kita menekan tombol profil, maka aplikasi akan mengarahkan kita ke halaman baru yang berisikan profil detail dari sesorang. Nah, setiap halaman tersebut adalah contoh gampang dari lifecycle aplikasi di Android, itu adalah salah satu contoh Android lifecycle.

Dan saat kita menutup aplikasi hanya dengan tombol back/home, sebenarnya aplikasi masih berjalan di memory. Inilah yang membuat aplikasi berjalan lebih cepat saat kita mengaksesnya kembali. Tapi juga membuat aplikasi lainnya melambat jika terlalu banyak membuka aplikasi yang menggunakan memory. Karena memory di Android pada umumnya terbatas, sehingga sistem Android akan otomatis menutup aplikasi berdasarkan prioritasnya, seperti yang ada pada tabel dibawah ini.

PROSES Description Priority
Foreground An application in which the user is interacting with an activity, or which has an service which is bound to such an activity. Also if a service is executing one of its lifecycle methods or a broadcast receiver which runs its onReceive()method. 1
Visible User is not interacting with the activity, but the activity is still (partially) visible or the application has a service which is used by a inactive but visible activity. 2
Service Application with a running service which does not qualify for 1 or 2. 3
Background Application with only stopped activities and without a service or executing receiver. Android keeps them in a least recent used (LRU) list and if requires terminates the one which was least used. 4
Empty Application without any active components. 5

Semua proses aplikasi berada didalam status Empty akan dijadikan antrian paling terakhir. Jika aplikasi yang berada dalam status Foreground mengalami force close atau lainnya, prioritas aplikasi yang berada di status Empty akan dinaikkan, begitu juga yang lainnya seperti yang ditunjukkan pada grafik dibawah ini.

lru-cacheAndroid akan kill aplikasi dengan low priority jika sistem membutuhkan space tambahan. Video berikut bisa juga membantu menjelaskan tentang apa itu LRU Cache dan bagimana cara kerja LRU Cache di Android.


Activity

Jika kita berbicara lifecycle, maka kita berbicara Activity. Di Android, Activity ini merupakan komponen yang menyediakan halaman tampilan agar user dapat berinteraksi dengan fitur dan aplikasi. Karena biasanya setiap aplikasi terdiri dari beberapa activity, dan tentunya memiliki activity utama. Dimana activity utama dapat dilihat saat kita pertama kali membuka aplikasi. Activity utama inilah yang nantinya mengarahkan user ke activity-activity lainnya (contohnya fitur aplikasi).

Tiap kali activity baru di akses, activity sebelumnya akan di hentikan. Tapi sistem di Android akan menyimpannya dalam sebuah tumpukan activity hingga suatu saat di panggil lagi, hal ini dinamakan dengan Back Stack.

Setiap Activity itu berbeda, tergantung bagaimana user berinteraksi dengannya dan juga dibagi menjadi beberapa kondisi:

State Description
Running Activity ini terlihat, dan user sedang berinteraksi dengan Activity ini.
Paused Activity ini masih terlihat, tetapi tidak dalam proses bekerja.
Stopped Activity ini tidak terlihat, dan kemungkinan akan di kill oleh sistem.
Killed Activity ini telah diakhiri/ditutup oleh sistem dengna memanggil method itsfinish().

Kondisi – kondisi diatas bisa bekerja jika menggunakan method-method yang disediakan oleh Android, seperti:

Metode Keterangan Bisa dimatikan setelahnya? Method Berikutnya
onCreate() Dipanggil saat aktivitas pertama kali dibuat. Di sinilah Kita harus melakukan semua persiapan pada tampilan utama. Yang selanjutnya akan menjalankan method onStart(). Tidak onStart()
onRestart() Dipanggil setelah Activity dihentikan, hingga nantinya di panggil lagi dan menjalankan method onStart() Tidak onStart()
onStart() Dipanggil tepat sebelum Activity terlihat di layar.Diikuti dengan method onResume() saat Activity sudah muncul dilayar dan method onStop() jika Activity ingin disembunyikan. Tidak onResume()
atau
onStop()
onResume() Dipanggil tepat sebelum Activity mulai berinteraksi dengan pengguna. Pada kondisi ini, activity utama berada di puncak tumpukan Activity yang ada. Dan selalu diikuti oleh method onPause(). Tidak onPause()
onPause() Dipanggil bila sistem akan memulai proses untuk Activity  lain. Method ini biasanya digunakan untuk menerapkan (commit) perubahan yang tidak tersimpan pada data persisten, menghentikan animasi dan hal-hal lain yang mungkin menghabiskan CPU, dan sebagainya. Ya onResume()
atau
onStop()
onStop() Dipanggil bila Activity tidak lagi terlihat dilayar. Hal ini bisa terjadi karena Activity sedang ditutup, atau karena adanya activity lain (yang baru). Diikuti oleh method onRestart() jika Activity kembali dipanggil untuk berinteraksi dengan pengguna, atau method onDestroy() jika activity benar-benar ingin dihilangkan. Ya onRestart()
atau
onDestroy()
onDestroy() Dipanggil sebelum activity benar-benar ingin tutup. Inilah panggilan terakhir yang akan diterima Activity. Ya tidak ada

Untuk memperjelasnya, dapat di semulasikan pada flow applikasi dibawah ini.

android_activity_lifecycle

Semoga dengan penjelasan sederhana diatas, temen-teman pembaca juga bisa memahami bagaimana daur hidup aplikasi di Android dan method standar apa saja yang di panggil untuk sebuah aplikasi. Well video dibawah ini juga dapat membantu menjelaskannya dan juga ikuti course dari Udacity yang menurut saya cakep dah penjelasannya. Happy Dev …


Referensi :

Iklan

Good People write good comments ..

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s