<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"
         android:stopWithTask=["true" | "false"]>
    ...
</service>
נכללים ב:
<application>
יכול להכיל:
<intent-filter>
<meta-data>
description:
הצהרה על שירות, תת-סוג של Service, כאחד מהרכיבים של האפליקציה. בניגוד לפעילויות, לשירותים אין ממשק משתמש חזותי. הם משמשים להטמעת פעולות רקע ממושכות או ממשק API עשיר לתקשורת שאפשר להפעיל אותו מאפליקציות אחרות.

כל השירותים צריכים להיות מיוצגים על ידי אלמנטים מסוג <service> בקובץ המניפסט. כל פונקציה שלא מוצגת שם לא מוצגת למערכת אף פעם.

הערה: ב-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", רק רכיבים של אותה אפליקציה או אפליקציות עם אותו מזהה משתמש יכולים להפעיל את השירות או לקשר אליו.

ערך ברירת המחדל תלוי אם השירות מכיל מסנני כוונות. המשמעות של היעדר מסננים היא שאפשר להפעיל את הפונקציה רק על ידי ציון שם הכיתה המדויק שלה. המשמעות היא שהשירות מיועד לשימוש רק בתוך האפליקציה, כי אחרים לא יודעים את שם הכיתה. לכן, במקרה הזה, ערך ברירת המחדל הוא "false". לעומת זאת, נוכחות של מסנן אחד לפחות מעידה על כך שהשירות מיועד לשימוש חיצוני, ולכן ערך ברירת המחדל הוא "true".

המאפיין הזה הוא לא הדרך היחידה להגביל את החשיפה של שירות לאפליקציות אחרות. אפשר גם להשתמש בהרשאה כדי להגביל את הישויות החיצוניות שיכולות לקיים אינטראקציה עם השירות. מידע נוסף זמין במאפיין permission.

android:foregroundServiceType

מציין שהשירות הוא שירות שפועל בחזית שעומד בדרישות של תרחיש לדוגמה מסוים. לדוגמה, סוג שירות בחזית מסוג "location" מציין שאפליקציה מקבלת את המיקום הנוכחי של המכשיר, בדרך כלל כדי להמשיך פעולה שהמשתמש יזם שקשורה למיקום המכשיר.

אפשר להקצות כמה סוגים של שירותים שפועלים בחזית לשירות מסוים.

android:icon
סמל שמייצג את השירות. המאפיין הזה מוגדר כהפניה למשאב drawable שמכיל את הגדרת התמונה. אם הוא לא מוגדר, המערכת תשתמש במקום זאת בסמל שצוין לאפליקציה כולה. אפשר לעיין במאפיין icon של הרכיב <application>.

הסמל של השירות, בין אם הוא מוגדר כאן ובין אם הוא מוגדר באמצעות הרכיב <application>, הוא גם הסמל שמוגדר כברירת מחדל לכל מסנני הכוונה של השירות. אפשר לעיין במאפיין icon של הרכיב <intent-filter>.

android:isolatedProcess
אם ההגדרה היא "true", השירות פועל בתהליך מיוחד שמבודד משאר המערכת ואין לו הרשאות משלו. התקשורת היחידה איתו היא דרך Service API, עם קישור והפעלה.
android:label
שם קריא למשתמש של השירות. אם לא תגדירו את המאפיין הזה, המערכת תשתמש בתווית שמוגדרת לאפליקציה כולה. אפשר לעיין במאפיין label של הרכיב <application>.

התווית של השירות, בין שהיא מוגדרת כאן ובין שהיא מוגדרת על ידי הרכיב <application>, היא גם תווית ברירת המחדל לכל מסנני הכוונה של השירות. אפשר לעיין במאפיין label של הרכיב <intent-filter>.

התווית מוגדרת כהפניה למשאב מחרוזת, כדי שאפשר יהיה לבצע לה לוקליזציה כמו למחרוזות אחרות בממשק המשתמש. עם זאת, כדי להקל על הפיתוח של האפליקציה, אפשר להגדיר אותו גם כמחרוזת גולמית.

android:name
השם של תת-הסוג של Service שמטמיע את השירות. זהו שם מלא של מחלקה, למשל "com.example.project.RoomService". עם זאת, כקיצור דרך, אם התו הראשון בשם הוא נקודה, למשל ".RoomService", הוא מצורף לשם החבילה שצוין ברכיב <manifest>.

אחרי שפרסמתם את האפליקציה, אל תשנו את השם הזה, אלא אם תגדירו את android:exported="false".

אין ברירת מחדל. חובה לציין את השם.

android:permission
השם של ההרשאה שנדרשת לישות כדי להפעיל את השירות או לקשר אליו. אם למבצע הקריאה ל-startService(), ל-bindService() או ל-stopService() לא ניתנה ההרשאה הזו, ה-method לא יפעל והאובייקט Intent לא יועבר לשירות.

אם המאפיין הזה לא מוגדר, ההרשאה שמוגדרת במאפיין permission של הרכיב <application> חלה על השירות. אם אף אחד מהמאפיינים לא מוגדר, השירות לא מוגן על ידי הרשאה.

מידע נוסף על הרשאות זמין בקטע הרשאות בסקירה הכללית על מניפסט האפליקציה ובהנחיות האבטחה.

android:process
השם של התהליך שבו השירות פועל. בדרך כלל, כל הרכיבים של אפליקציה פועלים בתהליך ברירת המחדל שנוצר עבור האפליקציה. השם שלו זהה לשם חבילת האפליקציה. אפשר להגדיר ערך ברירת מחדל שונה לכל הרכיבים באמצעות המאפיין process של האלמנט <application>. עם זאת, רכיב יכול לשנות את ברירת המחדל באמצעות המאפיין process שלו, וכך לאפשר לכם לפצל את האפליקציה לכמה תהליכים.

אם השם שהוקצה למאפיין הזה מתחיל בנקודתיים (:), נוצר תהליך חדש, פרטי לאפליקציה, כשיש צורך בכך, והשירות פועל בתהליך הזה.

אם שם התהליך מתחיל באות קטנה, השירות פועל בתהליך גלובלי בשם הזה, בתנאי שיש לו הרשאה לעשות זאת. כך רכיבים באפליקציות שונות יכולים לשתף תהליך, וכך מפחיתים את השימוש במשאבים.

android:stopWithTask
אם הערך מוגדר כ-"true", המערכת תפסיק את השירות באופן אוטומטי כשהמשתמש מסיר משימה שמבוססת על פעילות שבבעלות האפליקציה. ערך ברירת המחדל הוא "false".
מידע נוסף:
<application>
<activity>
הופיע לראשונה:
רמת API 1