Apa itu Service pada Android?
Service adalah komponen aplikasi yang menjalankan operasi tertentu yang bisa berjalan lama pada sistem Android, biasanya service itu berjalan di latar belakang. Service ini tidak menyediakan antarmuka pengguna (UI).
Ada dua macam service pada Android, yaitu :
- Started
Service yang komponen aplikasinya dimulai dengan memanggil startService(). Service ini akan berjalan selama belum dimatikan atau proses yang dijalankan selesai. Service akan tetap berjalan walaupun komponen yang lain dimatikan oleh sistem Android. Service ini digunakan untuk melakukan proses yang tidak memberikan nilai balik ke komponen yang memanggil. Contohnya seperti mengunduh atau mengunggah berkas.
- Bound
Service jenis ini merupakan tipe service yang dijalankan oleh komponen lain, namun saling mengikat satu sama lain. Hubungan yang terjadi antar kedua komponen tersebut seperti client-server. Bisa saling menerima response dan menerima request yang ada. Pada service ini dimungkinkan terjadi proses IPC (Interprocess Communication). Service ini akan tetap berjalan di background selama masih ada komponen lain yang mengikatnya. Jika tidak, maka Service akan dimatikan oleh sistem. Aplikasi pemutar musik merupakan salah satu jenis aplikasi yang mengimplementasikan Service jenis ini.
Perlu diingat, Service berjalan di Thread Utama dari proses hostingnya. Service tidak membuat Thread sendiri dan tidak berjalan di proses terpisah. Kecuali jika anda menetapkannya.
Jika service anda akan melakukan pekerjaan yang banyak membutuhkan CPU atau operasi pemblokiran (seperti pemutaran MP3 atau jaringan), buat Thread baru dalam layanan untuk melakukan pekerjaan itu. Dengan menggunakan Thread terpisah, anda akan mengurangi risiko kesalahan Aplikasi Tidak Merespons (Application Not Responding/ANR) dan Thread utama aplikasi bisa terus disediakan untuk interaksi pengguna.
• Sebelumnya telah belajar mengenai activity dan implementasinya. Activity adalah komponen yang memberikan pengalaman kepada pengguna secara langsung. Pengguna dapat melihat dan berinteraksi diatasnya.
• Service berada pada sisi yang lain, komponen ini tidak memiliki antarmuka dan bahkan pengguna tidak akan akan tahu bagaimana dia bekerja. Pengalaman yang diberikan oleh service hanya berupa proses yang tidak terlihat. Ia digunakan untuk menjalankan beragam macam proses yang memakan waktu lama.
• Walaupun berjalan secara background, pada dasarnya service dan komponen Android lainnya berjalan pada satu proses dan thread yang sama yaitu main thread atau ui thread. Bekerja di background bukan berarti ia bekerja secara asynchronous. Service tetap membutuhkan thread terpisah jika kita ingin melakukan proses yang membutuhkan komputasi intensif atau yang memakan waktu.
Contoh pemanfaatan service
• Aplikasi sosial media atau aplikasi yang memiliki kemampuan untuk menerima push notification. Aplikasi semacam ini pasti memiliki sebuah service yang berjalan dalam posisi stand by untuk selalu menerima pesan yang masuk.
• Aplikasi chat juga membutuhkan service untuk melakukan pengiriman dan menerima pesan yang dikirimkan oleh pengguna.
• Aplikasi pemutar musik juga melakukan hal yang sama. Untuk memberikan pengalaman yang lebih baik kepada pengguna, aplikasi pemutar musik biasanya meletakkan proses streaming atau memainkan musik di komponen service dengan tetap mempertahankan integrasi dengan komponen lain, misalnya notifikasi. Dll
Bentuk Service
• Started Service berjenis ini adalah tipe yang dijalankan oleh komponen lain, misal activity. Sekali dijalankan, service ini akan berjalan selama belum dimatikan atau proses yang dijalankan selesai. Sevice akan tetap berjalan walaupun komponen yang lain dimatikan oleh sistem Android. Umumnya penggunaan service ini adalah untuk melakukan proses yang tidak memberikan nilai balik ke komponen yang memanggilnya. Contohnya adalah, mengunduh atau mengunggah berkas.
• Bound Service jenis ini merupakan tipe service yang dijalankan oleh komponen lain, namun saling mengikat. Hubungan yang terjadi antar kedua komponen tersebut seperti client-server. Bisa saling menerima hasil dan menerima request yang ada. Pada service ini dimungkinkan terjadi proses IPC (Interprocess Communication). Service ini akan tetap berjalan di background selama masih ada komponen lain yang mengikatnya. Jika tidak, maka Service akan dimatikan oleh sistem. Aplikasi pemutar musik merupakan salah satu jenis aplikasi yang mengimplementasikan service jenis ini.
Latihan Penerapan Service
1. Untuk melihat jalannya service, buatkan tampilan seperti disamping.
Nama project : MyService Activity : Empty Activity2. Lengkapi MainActivity.xml
4. buat kelas service bernama OriginService dengan cara klik kanan pada package project → New → Service → Service. OriginService akan inherit (extends) kepada kelas Service.
5. Selanjutnya pada dialog yang tampil, isikan nama kelas service yang diinginkan. Di sini kita menamainya sebagai OriginService dan biarkan exported dan enabled tercentang. Klik Finish untuk menyelesaikan proses.
6. Selanjutnya, buka berkas AndroidManifest.xml pada package manifest dan perhatikan isi berkas tersebut. Service yang baru saja kita buat sudah ada didalam tag <application>:
7. BerkasAndroidManifest sudah dibuat secara otomatis. Dengan demikian kita sudah bisa menjalankan kelas service tersebut. Namun, sebelum menjalankan aplikasi, lengkapi kode pada OriginService menjadi seperti berikut :
8. Selanjutnya pada MainActivity.java dicase R.id.btn_start_service tambahkan baris berikut :
Inten mStartServiceIntent = new Intent(MainActivity.this,OrgainService.class);
startService(mStartsIntent);
9. Sehingga kode pada metode inClick() menjadi seperti ini :10. Sekarang jalankan aplikasi, Klik tombil ‘start service’ dan perhatikan pada lognya. OriginService telah dijalankan
dan tidak akanpernah mati sampai dimatikan oleh system atau metode stopSelf() atau stopService() dijalankan.
11. Baik, sekaraang kita akan menambahkan sebuah inner class AsyncTask, ia seakan-akan menjalankan sebuah proses
secara asynchronous dan mematikan/menghentikan dirinya sendiri dengan memanggil metode stopSelf(). Lengkapi kodenya sebagai berikut :
12. Jalankan aplikasinya. Klik tombol ‘start service’ dan perhatikan log-nya. Service dijalankan secara asynchronous danmematikan dirinya sendiri setelah proses selesai.13. Jika berhasil dijalankan, pada log androiod monitor akan seperti ini: 09-22 09:52:25.028 10209-10209/com.contoh.myserviceappD/OriginService: OriginService dijalankan 09-22 09:52:28.074 10209-10209/com.contoh.myserviceapp D/OriginService: StopService 09-22 09:52:28.07810209-10209/com.contoh.myserviceapp D/OriginService: onDestroy()