Sebelumnya telah dibahas mengenai activites dan juga lifecycle dari activities. kali ini akan membahas mengenai siklus dari komponen Services.

Komponen Services berjalan secara background untuk melayani proses yang membutuhkan waktu lama tanpa mengganggu interaksi dengan user. Sebagai contoh, sebuah Services memungkinkan memutar lagu secara background ketika user sedang menjalankan aplikasi yang berbeda atau sedang mengambil data dari jaringan tanpa mengganggu interaksi dengan user pada sebuah aktivitas. Sebuah Services pada dasarnya dapat mengambil dua keadaan, yaitu :

Started, Sebuah Service mulai dijalankan ketika pada suatu komponen aplikasi, seperti activity memulai dengan memanggil startSrvice(). sekali dijalankan, Sebuah service dapat berjalan secara background tanpa batas, bahkan jika komponen yang memulainya di matikan.

Bound, Sebuah Service terikat apabila komponen aplikasi mengikat dengan memanggil bindService(). Sebuah service terikat memberikan antarmuka client-server yang memungkinkan komponen untuk berinteraksi dengan service, mengirim permintaan, mendapatkan hasil, dan bahkan melakukannya lintas proses dengan interprocess communication (IPC).

Sebuah Service memiliki siklus hidup metode callback yang dapat di implementasikan untuk memonitor perubahan keadaan bagian service dan juga dapat melakukan pekerjaan pada tahap yang sesuai. berikut diagram siklus hidup dari service, sebelah kiri menunjukkan siklus hidup saat service dibuat dengan startService() dan pada bagian sebelah kanan menunjukkan siklus hidup saat service dibuat dengan bindService().

android service lifecycle

 

Untuk membuat Service, Buat class yang meng-extends class base Service atau salah satu dari subclass yang ada. Class base Service mendefinisikan berbagai methods callback dan yang paling penting adalah sebagai berikut. ini tidak perlu di implementasikan semua method callback nya. Namun penting untuk dipahami dalam mengimplementasikan masing-masing untuk memastikan aplikasi berperilaku sesuai dengan yg diharapkan.

onStartCommand(), Sistem memanggil method ini ketika komponen lain, seperti aktivity, permintaan Service dimulai dengan memanggil startService(). jika mengimplemantasikan method ini, maka bertanggung jawab untuk menghentikan Service ketika selesai melakukan tugas. dengan memanggil method stopSelf() atau method stopService().

onBind(), Sistem memanggil method ini ketika komponen lain ingin mengikat(bind) dengan service dengan memanggil method bindService(). jika menerapkan metode ini, maka harus menyediakan sebuah interface yang digunakan untuk berkomunikasi dengan Service, dengan mengembalikan sebuah object IBinder. harus selalu menerapkan method ini, tetapi jika tidak ingin untuk membolehkan mengikat(binding), maka harus mengembalikan nilai null.

onUnbind(), Sistem memanggil method ini ketika semua klien telah terputus dari interface tertentu yang di mulai oleh service.

onRebind(), Sistem memanggil method ini ketika klien baru telah tersambung ke Service, setelah sebelumnya telah terputus dalam onUnbind(intent).

onCreate(), Sistem memanggil method ini ketika Service pertama kali dibuat menggunakan method onStartCommand() atau onBind(). Panggilan ini diperlukan untuk melakukan setup pertama kali.

onDestroy(), Sistem memanggil method ini ketika Service tidak lagi digunakan. Service harus menerapkan ini untuk membersihkan setiap sumber daya seperti threads, registered listerners, receivers, dll.