- sintaksis:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </service>
- terdapat dalam:
<application>
- dapat berisi:
<intent-filter>
<meta-data>
- deskripsi:
- Mendeklarasikan layanan (subclass
Service
) sebagai salah satu komponen aplikasi. Tidak seperti aktivitas, layanan tidak memiliki antarmuka pengguna visual. Layanan digunakan untuk mengimplementasikan operasi latar belakang yang sudah berjalan lama atau API komunikasi kaya yang bisa dipanggil oleh aplikasi lain.Semua layanan harus diwakili oleh elemen-elemen
<service>
dalam file manifes. Apa pun yang tidak dideklarasikan tidak akan terlihat oleh sistem dan tidak akan dijalankan.Catatan: Di Android 8.0 (API level 26) dan yang lebih baru, sistem membatasi operasi yang dapat dilakukan aplikasi Anda saat aplikasi berjalan di latar belakang. Untuk informasi selengkapnya, lihat panduan yang membahas batas eksekusi latar belakang dan batas lokasi latar belakang.
- atribut:
android:description
- String yang menjelaskan layanan kepada pengguna. Label harus ditetapkan sebagai referensi ke resource string sehingga dapat dilokalkan seperti string lain pada antarmuka pengguna.
android:directBootAware
Apakah layanan ini direct-boot aware atau tidak; yaitu, apakah dapat berjalan ataukah tidak sebelum pengguna membuka kunci perangkat.
Catatan: Selama Direct Boot, layanan dalam aplikasi Anda hanya dapat mengakses data yang disimpan di penyimpanan perangkat yang dilindungi.
Nilai default-nya adalah
"false"
.android:enabled
- Apakah instance layanan dapat dibuat oleh sistem atau tidak;
"
true
" jika dapat, dan "false
" jika tidak dapat. Nilai defaultnya adalah "true
".Elemen
<application>
memiliki atributenabled
sendiri yang diterapkan ke semua komponen aplikasi, termasuk layanan. Atribut<application>
dan<service>
harus bernilai "true
" (seperti defaultnya) agar layanan diaktifkan. Jika salah satunya bernilai "false
", layanan tersebut akan dinonaktifkan dan instance-nya juga tidak dapat dibuat. android:exported
- Apakah komponen aplikasi lain dapat memanggil
layanan atau berinteraksi dengannya—"
true
" jika bisa, dan "false
" jika tidak bisa. Ketika nilainya adalah "false
", hanya komponen aplikasi yang sama atau aplikasi dengan ID pengguna yang sama yang dapat memulai layanan atau mengikatnya.Nilai default tergantung apakah layanan tersebut berisi filter intent. Tidak adanya filter berarti layanan dapat dipanggil hanya dengan menentukan nama class yang tepat. Ini menyiratkan bahwa layanan ini dimaksudkan hanya untuk penggunaan internal aplikasi (karena orang lain tidak akan tahu nama class-nya). Jadi, dalam hal ini, nilai defaultnya adalah "
false
". Di sisi lain, jika ada setidaknya satu filter, artinya layanan ditujukan untuk penggunaan eksternal sehingga nilai defaultnya adalah "true
".Atribut ini bukan satu-satunya cara untuk membatasi pemaparan layanan ke aplikasi lain. Anda juga dapat menggunakan izin untuk membatasi entity eksternal yang dapat berinteraksi dengan layanan (lihat atribut
permission
). android:foregroundServiceType
Tentukan bahwa layanan ini adalah layanan latar depan yang memenuhi kasus penggunaan tertentu. Misalnya, jenis layanan latar depan
"location"
menunjukkan bahwa aplikasi mendapatkan lokasi perangkat saat ini, biasanya untuk melanjutkan tindakan yang dimulai oleh pengguna yang terkait dengan lokasi perangkat.Anda dapat menetapkan beberapa jenis layanan latar depan untuk layanan tertentu.
android:icon
- Ikon yang mewakili layanan. Atribut ini harus ditetapkan sebagai referensi ke resource drawable yang berisi definisi gambar.
Jika tidak, ikon yang ditetapkan untuk aplikasi
secara keseluruhan akan digunakan sebagai gantinya (lihat atribut
icon
milik elemen<application>
).Ikon layanan, baik yang ditetapkan di sini maupun oleh elemen
<application>
, juga merupakan ikon default untuk semua filter intent layanan (lihat atributicon
milik elemen<intent-filter>
). android:isolatedProcess
- Jika disetel ke benar (true), layanan ini akan berjalan di bawah proses khusus yang terisolasi dari bagian sistem lainnya dan tidak memiliki izinnya sendiri. Satu-satunya komunikasi dengannya adalah melalui Service API (mengikat dan memulai).
android:label
- Nama untuk layanan yang dapat ditampilkan kepada pengguna.
Jika atribut ini tidak ditetapkan, label yang ditetapkan untuk aplikasi secara keseluruhan
akan digunakan (lihat atribut
label
elemen<application>
).Label layanan baik yang ditetapkan di sini maupun oleh elemen
<application>
, juga merupakan label default untuk semua filter intent layanan (lihat atributlabel
milik elemen<intent-filter>
).Label harus ditetapkan sebagai referensi ke resource string sehingga dapat dilokalkan seperti string lain pada antarmuka pengguna. Namun, untuk memudahkan Anda mengembangkan aplikasi, label ini juga dapat ditetapkan sebagai string mentah.
android:name
- Nama subclass
Service
yang mengimplementasikan layanan. Nama subclass ini harus sepenuhnya memenuhi syarat (seperti "com.example.project.RoomService
"). Namun, sebagai singkatan, jika karakter pertamanya adalah titik (misalnya ".RoomService
"), karakter ini akan ditambahkan ke nama paket yang ditetapkan dalam elemen<manifest>
.Setelah memublikasikan aplikasi, Anda tidak boleh mengubah nama ini (kecuali Anda telah menetapkan
android:exported="false"
).Tidak ada default untuknya. Nama ini harus ditetapkan.
android:permission
- Nama izin yang harus dimiliki suatu entity untuk meluncurkan layanan atau mengikatnya. Jika pemanggil
,startService()
, ataubindService()
, belum diberikan izin ini, metode ini tidak akan berfungsi dan objek Intent tidak akan dikirimkan ke layanan.stopService()
Jika atribut ini tidak disetel, izin yang ditetapkan oleh atribut
permission
milik elemen<application>
diterapkan untuk layanan tersebut. Jika tidak ada atribut yang disetel, layanan tersebut tidak dilindungi oleh izin.Untuk mengetahui informasi izin selengkapnya, lihat bagian Izin dalam pengantar dan dokumen terpisah yang berjudul Keamanan dan Izin.
android:process
- Nama proses tempat layanan harus dijalankan. Biasanya,
semua komponen aplikasi berjalan pada proses default yang dibuat untuk
aplikasi tersebut. Proses ini memiliki nama yang sama dengan paket aplikasi. Atribut
process
milik elemen<application>
dapat menetapkan default yang berbeda untuk semua komponen. Namun, komponen dapat mengesampingkan default dengan atributprocess
miliknya sendiri sehingga Anda dapat menyebarluaskan aplikasi ke berbagai proses.Jika nama yang ditetapkan ke atribut ini dimulai dengan titik dua (':'), proses baru, yang bersifat pribadi untuk aplikasi, dibuat saat diperlukan dan layanan berjalan dalam proses tersebut. Jika nama proses dimulai dengan karakter huruf kecil, layanan akan berjalan pada proses global dari nama tersebut, jika memiliki izin untuk melakukannya. Hal ini memungkinkan komponen dalam aplikasi yang berbeda untuk berbagi proses sehingga mengurangi penggunaan resource.
- lihat juga:
<application>
<activity>
- diperkenalkan di:
- API Level 1
Konten dan contoh kode di halaman ini tunduk pada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2022-09-13 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Informasi yang saya butuhkan tidak ada"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Terlalu rumit/langkahnya terlalu banyak"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Sudah usang"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Masalah terjemahan"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Masalah kode / contoh"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Lainnya"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Mudah dipahami"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Memecahkan masalah saya"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Lainnya"
}]