- ไวยากรณ์:
<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" android:stopWithTask=["true" | "false"]> ... </service>
- รวมอยู่ใน:
<application>- สามารถมีองค์ประกอบต่อไปนี้
<intent-filter><meta-data><property>- คำอธิบาย:
- ประกาศบริการ ซึ่งเป็นคลาสย่อยของ
Serviceให้เป็นหนึ่งในคอมโพเนนต์ของแอปพลิเคชัน บริการไม่มีอินเทอร์เฟซผู้ใช้แบบภาพเหมือนกับกิจกรรม โดยใช้เพื่อดำเนินการเบื้องหลังที่ใช้เวลานานหรือ API การสื่อสารที่สมบูรณ์ซึ่งแอปพลิเคชันอื่นๆ สามารถเรียกใช้ได้บริการทั้งหมดต้องแสดงด้วยองค์ประกอบ
<service>ใน ไฟล์ Manifest หากไม่ได้ประกาศไว้ในไฟล์ดังกล่าว ระบบจะไม่เห็นและบริการจะไม่ทำงานหมายเหตุ: ใน Android 8.0 (API ระดับ 26) ขึ้นไป ระบบจะจำกัด สิ่งที่แอปทำได้ขณะทำงานในเบื้องหลัง ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำที่กล่าวถึงข้อจำกัดการทำงานในเบื้องหลังและข้อจำกัดตำแหน่งในเบื้องหลัง
- แอตทริบิวต์:
android:description- สตริงที่ผู้ใช้สามารถอ่านได้ซึ่งอธิบายบริการ คำอธิบายจะตั้งค่าเป็นการ อ้างอิงทรัพยากรสตริงเพื่อให้แปลเป็นภาษาต่างๆ ได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้
android:directBootAwareระบุว่าบริการ รองรับการบูตโดยตรง หรือไม่ นั่นคือ สามารถทำงานได้ก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์หรือไม่
หมายเหตุ: ระหว่าง การบูตโดยตรง บริการใน แอปพลิเคชันจะเข้าถึงได้เฉพาะข้อมูลที่จัดเก็บไว้ใน พื้นที่เก็บข้อมูลที่ป้องกันด้วยอุปกรณ์
ค่าเริ่มต้นคือ
"false"android:enabled- ระบุว่าระบบสร้างอินสแตนซ์ของบริการได้หรือไม่ ค่าจะเป็น
"true"หากสร้างได้ และ"false"หากสร้างไม่ได้ ค่าเริ่มต้นคือ"true"องค์ประกอบ
<application>มีแอตทริบิวต์enabledของตัวเองซึ่งใช้กับคอมโพเนนต์ทั้งหมดของแอปพลิเคชัน รวมถึงบริการ แอตทริบิวต์<application>และ<service>ต้องเป็น"true"ทั้งคู่ (ซึ่ง เป็นค่าเริ่มต้น) บริการจึงจะเปิดใช้ได้ หากแอตทริบิวต์ใดแอตทริบิวต์หนึ่งเป็น"false"บริการจะถูกปิดใช้และสร้างอินสแตนซ์ไม่ได้ android:exported- ระบุว่าคอมโพเนนต์ของแอปพลิเคชันอื่นๆ สามารถเรียกใช้บริการหรือโต้ตอบกับบริการได้หรือไม่ ค่าจะเป็น
"true"หากทำได้ และ"false"หากทำไม่ได้ เมื่อค่าเป็น"false"เฉพาะคอมโพเนนต์ของแอปพลิเคชันเดียวกันหรือแอปพลิเคชันที่มีรหัสผู้ใช้เดียวกันเท่านั้นที่จะเริ่มบริการหรือผูกกับบริการได้ค่าเริ่มต้นจะขึ้นอยู่กับว่าบริการมีตัวกรอง Intent หรือไม่ หากไม่มีตัวกรองใดๆ หมายความว่าบริการจะเรียกใช้ได้โดยการระบุชื่อคลาสที่แน่นอนเท่านั้น ซึ่งหมายความว่าบริการมีไว้ใช้ภายในแอปพลิเคชันเท่านั้น เนื่องจากแอปพลิเคชันอื่นๆ ไม่ทราบชื่อคลาส ดังนั้นในกรณีนี้ ค่าเริ่มต้นจะเป็น
"false"ในทางกลับกัน หากมีตัวกรองอย่างน้อย 1 รายการ หมายความว่าบริการมีไว้ใช้ภายนอก ดังนั้นค่าเริ่มต้นจะเป็น"true"แอตทริบิวต์นี้ไม่ใช่วิธีเดียวในการจำกัดการแสดงบริการต่อแอปพลิเคชันอื่นๆ คุณยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่โต้ตอบกับบริการได้ด้วย ดูแอตทริบิวต์
permission android:foregroundServiceTypeระบุว่าบริการเป็นบริการที่ทำงานอยู่เบื้องหน้าซึ่งตรงตาม Use Case ที่เฉพาะเจาะจง ตัวอย่างเช่น ประเภทบริการที่ทำงานอยู่เบื้องหน้า
"location"บ่งบอกว่าแอปกำลังรับตำแหน่งปัจจุบันของอุปกรณ์ ซึ่งโดยปกติแล้วจะเป็นการดำเนินการต่อจากการดำเนินการที่ผู้ใช้เริ่มต้นขึ้นซึ่งเกี่ยวข้องกับตำแหน่งของอุปกรณ์คุณสามารถกำหนดประเภทบริการที่ทำงานอยู่เบื้องหน้าหลายประเภทให้กับบริการที่เฉพาะเจาะจงได้
android:icon- ไอคอนที่แสดงบริการ แอตทริบิวต์นี้ตั้งค่าเป็นการอ้างอิงทรัพยากร Drawable ที่มีคำจำกัดความของรูปภาพ
หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ไอคอนที่ระบุไว้สำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์ขององค์ประกอบ
<application>iconไอคอนของบริการ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือโดยองค์ประกอบ
<application>จะเป็นไอคอน เริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของบริการด้วย ดูแอตทริบิวต์iconขององค์ประกอบ<intent-filter> android:isolatedProcess- หากตั้งค่าเป็น
"true"บริการนี้จะทำงานภายใต้กระบวนการพิเศษที่แยกจาก ระบบอื่นๆ และไม่มีสิทธิ์ของตัวเอง การสื่อสารกับบริการนี้จะทำได้ผ่าน Service API เท่านั้น โดยใช้ การผูกและการเริ่มต้น android:label- ชื่อที่ผู้ใช้สามารถอ่านได้สำหรับบริการ
หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะใช้ป้ายกำกับที่ตั้งไว้สำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์
labelขององค์ประกอบ<application>ป้ายกำกับของบริการ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือโดยองค์ประกอบ
<application>จะเป็นป้ายกำกับ เริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของบริการด้วย ดูแอตทริบิวต์labelขององค์ประกอบ<intent-filter>ป้ายกำกับจะตั้งค่าเป็นการอ้างอิงทรัพยากรสตริงเพื่อให้แปลเป็นภาษาต่างๆ ได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ อย่างไรก็ตาม คุณยังตั้งค่าเป็นสตริงดิบได้ด้วยเพื่อความสะดวกขณะพัฒนาแอปพลิเคชัน
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ของตัวเอง ซึ่งช่วยให้คุณกระจายแอปพลิเคชันไปยังกระบวนการต่างๆ ได้หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้ขึ้นต้นด้วยโคลอน (
:) ระบบจะสร้างกระบวนการใหม่ที่เป็นส่วนตัวสำหรับแอปพลิเคชันเมื่อจำเป็น และบริการจะทำงานในกระบวนการนั้นหากชื่อกระบวนการขึ้นต้นด้วยอักขระตัวพิมพ์เล็ก บริการจะทำงานในกระบวนการส่วนกลางที่มีชื่อนั้น โดยมีเงื่อนไขว่าบริการมีสิทธิ์ทำเช่นนั้น ซึ่งจะช่วยให้คอมโพเนนต์ในแอปพลิเคชันต่างๆ แชร์กระบวนการเดียวกันได้ จึงช่วยลดการใช้ทรัพยากร
android:stopWithTask- หากตั้งค่าเป็น
"true"ระบบจะหยุดบริการโดยอัตโนมัติเมื่อผู้ใช้นำงานที่เริ่มต้นจากกิจกรรมที่แอปเป็นเจ้าของออก ค่าเริ่มต้นคือ"false"
- ดูเพิ่มเติม:
<application><activity>- เปิดตัวใน:
- ระดับ API 1
<service>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2026-07-01 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2026-07-01 UTC"],[],[]]