<service>

ไวยากรณ์:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:foregroundServiceType=["camera" | "connectedDevice" |
                                        "dataSync" | "health" | "location" |
                                        "mediaPlayback" | "mediaProjection" |
                                        "microphone" | "phoneCall" |
                                        "remoteMessaging" | "shortService" |
                                        "specialUse" | "systemExempted"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    ...
</service>
ที่อยู่ใน:
<application>
สามารถมีข้อมูลต่อไปนี้
<intent-filter>
<meta-data>
description:
ประกาศบริการ คลาสย่อย Service เป็นคลาสเดียว คอมโพเนนต์ของแอปพลิเคชัน สิ่งที่ต่างจากกิจกรรมคือ บริการไม่มี อินเทอร์เฟซผู้ใช้แบบภาพ แอปเหล่านี้ใช้สำหรับสร้างพื้นหลังที่ใช้เวลานาน หรือ API การสื่อสารที่สมบูรณ์ที่ผู้อื่นสามารถเรียกใช้ได้ แอปพลิเคชัน

บริการทั้งหมดต้องแสดงด้วยองค์ประกอบ <service> ใน ไฟล์ Manifest รายการใดๆ ที่ไม่ได้ประกาศไว้ว่าไม่มี ด้วยระบบและไม่เคยเรียกใช้

หมายเหตุ: ใน Android 8.0 (API ระดับ 26) ขึ้นไป ระบบจะจำกัด สิ่งที่แอปของคุณทำได้ ขณะที่แอปทำงานในพื้นหลัง สำหรับ โปรดดูข้อมูลเพิ่มเติมจากคำแนะนำที่พูดถึง ขีดจำกัดการดำเนินการในเบื้องหลังและ ตำแหน่งในเบื้องหลัง ขีดจำกัด

ดังนี้
android:description
สตริงที่ผู้ใช้อ่านได้ซึ่งอธิบายถึงบริการ คำอธิบายได้รับการตั้งค่าเป็น การอ้างอิงไปยังทรัพยากรสตริง เพื่อให้แปลได้เช่นเดียวกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้
android:directBootAware

บริการเป็นแบบรับรู้การเปิดเครื่องโดยตรงหรือไม่ กล่าวคือ ว่าจะทำงานก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์ได้หรือไม่

หมายเหตุ: ระหว่าง Direct Boot ซึ่งเป็นบริการใน แอปพลิเคชันของคุณจะสามารถเข้าถึงเฉพาะข้อมูลที่เก็บไว้ใน พื้นที่เก็บข้อมูลที่ปกป้องอุปกรณ์

ค่าเริ่มต้นคือ "false"

android:enabled
บริการสร้างขึ้นโดยระบบได้หรือไม่ ตอนนี้ "true" หากทำได้ และ "false" หากทำได้ ค่าเริ่มต้น มีค่า "true"

องค์ประกอบ <application> ของตัวเอง แอตทริบิวต์ enabled ที่ใช้กับแอตทริบิวต์ทั้งหมด คอมโพเนนต์ของแอปพลิเคชัน รวมถึงบริการ <application> และ <service> แอตทริบิวต์ต้องเป็น "true" ทั้งคู่ โดยค่าเริ่มต้น เพื่อเปิดใช้บริการ หากข้อใดข้อหนึ่งคือ "false" ระบบได้ปิดใช้บริการนี้และสร้างอินสแตนซ์ไม่ได้

android:exported
กำหนดว่าคอมโพเนนต์ของแอปพลิเคชันอื่นจะเรียกใช้ได้หรือไม่ บริการหรือโต้ตอบกับบริการ ราคา "true" หากทำได้ และ "false" หากไม่ เมื่อค่าเป็น "false" จะมีเพียง คอมโพเนนต์ของแอปพลิเคชันหรือแอปพลิเคชันเดียวกัน ที่มีรหัสผู้ใช้เดียวกันสามารถเริ่มใช้บริการหรือเชื่อมโยงกับบริการได้

ค่าเริ่มต้นขึ้นอยู่กับว่าบริการมีตัวกรอง Intent หรือไม่ ไม่มีตัวกรองใดๆ หมายความว่าระบบจะเรียกใช้ได้โดยการระบุ ชื่อคลาสที่ตรงกันทุกประการ ซึ่งหมายความว่าบริการนี้มีไว้สำหรับ การใช้งานภายในแอปพลิเคชัน เนื่องจากผู้อื่นไม่ทราบชื่อชั้นเรียน ดังนั้นใน ในกรณีนี้ ค่าเริ่มต้นคือ "false" ในขณะที่ การมีตัวกรองอย่างน้อยหนึ่งรายการ แสดงว่าบริการ มีไว้สำหรับใช้ภายนอก ดังนั้นค่าเริ่มต้นจะเป็น "true"

แอตทริบิวต์นี้ไม่ใช่วิธีเดียวที่จะจำกัดการแสดงบริการแก่ผู้ใช้รายอื่น แอปพลิเคชัน คุณยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่ โต้ตอบกับบริการได้ โปรดดูpermission

android:foregroundServiceType

ระบุว่าบริการนั้นเป็น บริการที่ทำงานอยู่เบื้องหน้าซึ่งเป็นไปตาม Use Case เฉพาะ เช่น บริการที่ทำงานอยู่เบื้องหน้าประเภท "location" บ่งบอกว่าแอปกำลังอัปเดตอุปกรณ์ให้เป็นปัจจุบัน ตำแหน่ง โดยทั่วไปจะเป็น ดำเนินการต่อ การดำเนินการที่เริ่มต้นโดยผู้ใช้ที่เกี่ยวข้องกับตำแหน่งของอุปกรณ์

คุณกำหนดบริการที่ทำงานอยู่เบื้องหน้าได้หลายประเภทให้กับ service.

android:icon
ไอคอนที่แสดงถึงบริการ แอตทริบิวต์นี้ได้รับการตั้งค่าเป็น การอ้างอิงไปยังทรัพยากรที่ถอนออกได้ที่มีคำจำกัดความของรูปภาพ หากไม่ได้ตั้งค่าไว้ ไอคอนที่ระบุไว้สำหรับแอปพลิเคชัน จะใช้จำนวนเต็มแทน โปรดดู<application> แอตทริบิวต์ icon ขององค์ประกอบ

ไอคอนของบริการ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตาม <application> ยังเป็นองค์ประกอบ ไอคอนเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของบริการ โปรดดู ขององค์ประกอบ <intent-filter> icon

android:isolatedProcess
หากตั้งค่าเป็น "true" บริการนี้จะทำงานภายใต้กระบวนการพิเศษที่แยกออกจาก ส่วนที่เหลือของระบบและไม่มีสิทธิ์ของตนเอง วิธีเดียวคือการสื่อสารผ่าน Service API โดย ที่ผูกไว้และเริ่มต้น
android:label
ชื่อบริการที่ผู้ใช้อ่านได้ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ป้ายกำกับที่ตั้งไว้สำหรับแอปพลิเคชันโดยรวมจะเป็น ใช้แทน ดูองค์ประกอบ <application> label

ป้ายกำกับของบริการ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตามแท็ก <application> ยังเป็นองค์ประกอบ ป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของบริการ โปรดดู ขององค์ประกอบ <intent-filter> label

ป้ายกำกับได้รับการตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรสตริง ดังนั้น สามารถแปลได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ แต่เพื่อความสะดวก ในระหว่างที่คุณพัฒนาแอปพลิเคชัน ยังสามารถตั้งค่าเป็นสตริงดิบได้

android:name
ชื่อคลาสย่อย Service ที่นำไปใช้ บริการ นี่คือชื่อคลาสที่มีคุณสมบัติครบถ้วน เช่น "com.example.project.RoomService" แต่ถ้ากล่าวสั้นๆ ได้ว่า อักขระแรกของชื่อคือจุด เช่น ".RoomService" จะเพิ่มค่าต่อท้ายชื่อแพ็กเกจที่ระบุไว้ใน องค์ประกอบ <manifest>

เมื่อคุณเผยแพร่แอปพลิเคชันของคุณแล้ว อย่า เปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า android:exported="false"

ไม่มีค่าเริ่มต้น ต้องระบุชื่อ

android:permission
ชื่อสิทธิ์ที่เอนทิตีต้องใช้เพื่อ เรียกใช้บริการหรือเชื่อมโยงกับบริการนั้น หากผู้โทร startService(), bindService() หรือ stopService() ไม่ได้รับอนุญาต วิธีนี้ใช้ไม่ได้ ส่งออบเจ็กต์ Intent ไปยังบริการไม่ได้

หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ไว้ สิทธิ์ที่กำหนดโดย ขององค์ประกอบ <application> วันที่ permission ที่ใช้กับบริการ หากไม่ได้ตั้งค่าแอตทริบิวต์ไว้ แสดงว่าบริการยังไม่ได้ ได้รับการปกป้องด้วยสิทธิ์

ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ สิทธิ์ ในภาพรวมไฟล์ Manifest ของแอปและ หลักเกณฑ์ด้านความปลอดภัย

android:process
ชื่อของกระบวนการที่บริการทำงาน โดยทั่วไป คอมโพเนนต์ทั้งหมดของแอปพลิเคชันจะทำงานในกระบวนการเริ่มต้นที่สร้างขึ้นสำหรับ แอปพลิเคชัน มีชื่อเดียวกับแพ็กเกจแอปพลิเคชัน ขององค์ประกอบ <application> วันที่ process สามารถตั้งค่าแอตทริบิวต์ ค่าเริ่มต้นสำหรับทุกคอมโพเนนต์ แต่คอมโพเนนต์จะลบล้างค่าเริ่มต้นได้ ด้วยแอตทริบิวต์ process ของตัวเองเพื่อ ช่วยให้คุณกระจายข้อมูล การใช้งานในหลายกระบวนการ

หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้เริ่มต้นด้วยโคลอน (:) ซึ่งเป็นแบบส่วนตัวสำหรับแอปพลิเคชัน จะสร้างขึ้นเมื่อจำเป็น และ บริการจะทำงานในกระบวนการนั้น

หากชื่อกระบวนการขึ้นต้นด้วยอักขระตัวพิมพ์เล็ก บริการจะทำงาน ในกระบวนการส่วนกลางของชื่อนั้น หากชื่อนั้นได้รับอนุญาตให้ดำเนินการดังกล่าว ทำให้คอมโพเนนต์ต่างๆ ในแอปพลิเคชันต่างๆ สามารถแบ่งปันกระบวนการได้โดย การใช้ทรัพยากร

ดูเพิ่มเติม
<application>
<activity>
เปิดตัวใน
API ระดับ 1