<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>
<property>
תיאור:
Declares a service, a Service subclass, as one of the application's components. בניגוד לפעילויות, לשירותים אין ממשק משתמש חזותי. הם משמשים להטמעה של פעולות ממושכות ברקע או של 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", רק רכיבים של אותה אפליקציה או אפליקציות עם אותו User-ID יכולים להפעיל את השירות או להתחבר אליו.

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

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

android:foregroundServiceType

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

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

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

הסמל של השירות, בין אם הוא מוגדר כאן או באמצעות הרכיב <application>, הוא גם סמל ברירת המחדל לכל מסנני ה-Intent של השירות. אפשר לעיין במאפיין 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