- תחביר:
<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>
- תיאור:
- מצהירה על שירות, תת-מחלקה
Service
, כמחלקה אחת של רכיבי האפליקציה. בשונה מפעילויות, בשירותים אין ממשק משתמש חזותי. הם משמשים להטמעת רקע לאורך זמן פעולות או ממשק API לתקשורת עשירה, שהלקוח יכול לקרוא לו תרגום מכונה.כל השירותים חייבים להיות מיוצגים על ידי רכיבי
<service>
ב- את קובץ המניפסט. אתרים שלא הוצהרו עליהם, לא מופיעים. על ידי המערכת והם אף פעם לא יופעלו.הערה: ב-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
מציין שהשירות שירות שפועל בחזית שעומד והוא תרחיש לדוגמה ספציפי. לדוגמה, סוג שירות שפועל בחזית
"location"
מציין שאפליקציה מקבלת את נתוני המכשיר הנוכחיים מיקום, בדרך כלל המשך פעולה ביוזמת המשתמש שקשורה למיקום המכשיר.אפשר להקצות כמה סוגים של שירותים שפועלים בחזית לכל סוג של שירות שפועל בחזית לאחר השיפור.
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
חל על השירות. אם לא הוגדר אף מאפיין, השירות לא מוגן באמצעות הרשאה.למידע נוסף על הרשאות עיינו במאמר הרשאות בסקירה הכללית של קובץ המניפסט של האפליקציה. הנחיות אבטחה.
android:process
- שם התהליך שבו השירות פועל. בדרך כלל,
כל הרכיבים של אפליקציה שפועלים בתהליך ברירת המחדל שנוצר עבור
תרגום מכונה. יש לה שם זהה לחבילת האפליקציה.
של רכיב
<application>
process
יכול להגדיר ברירת מחדל לכל הרכיבים. אבל רכיב יכול לשנות את ברירת המחדל עם מאפייןprocess
משלו, שמאפשר לפזר בכמה תהליכים.אם השם שהוקצה למאפיין הזה מתחיל בנקודתיים (
:
), בתהליך פרטי לאפליקציה, נוצר כאשר יש בו צורך השירות פועל בתהליך הזה.אם שם התהליך מתחיל בתו קטן, השירות יפעל בתהליך גלובלי בשם זה, בתנאי שיש לו הרשאה לעשות זאת. כך אפשר לרכיבים באפליקציות שונות לשתף תהליך, וכך לצמצם שימוש במשאבים.
- למידע נוסף:
<application>
<activity>
- הושקו ב:
- רמת API 1
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2024-08-22 (שעון UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"חסרים לי מידע או פרטים"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"התוכן מורכב מדי או עם יותר מדי שלבים"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"התוכן לא עדכני"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"בעיה בתרגום"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"בעיה בדוגמאות/בקוד"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"סיבה אחרת"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"התוכן קל להבנה"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"התוכן עזר לי לפתור בעיה"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"סיבה אחרת"
}]
{"lastModified": "\u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d7\u05e8\u05d5\u05df: 2024-08-22 (\u05e9\u05e2\u05d5\u05df 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"]],["עדכון אחרון: 2024-08-22 (שעון UTC)."]]