במסמכי העזרה בנושא שירותים שפועלים בחזית מתוארת ההתנהגות הנוכחית של שירותים שפועלים בחזית ב-Android. במסמכי התיעוד מפורטות שיטות מומלצות לרוב האפליקציות, גם אם הן מטרגטות את הגרסה העדכנית ביותר של Android וגם אם לא.
בדף הזה מתוארים חלק מהשינויים החשובים ביותר האחרונים בשירותי חזית, וההשלכות על אפליקציות שלא מטרגטות את הגרסה העדכנית ביותר של פלטפורמת Android. במקרים רבים, שיטות מומלצות שהיו אופציונליות לאפליקציות שמטרגטות רמות API נמוכות יותר הופכות להיות חובה לאפליקציות שמטרגטות רמות API גבוהות יותר.
Android 16 (רמת API 36)
השינויים הבאים חלים על אפליקציות שפועלות ב-Android 16 ואילך, ללא קשר לרמת ה-API שהן מטרגטות:
משימות רקע שהופעלו משירות שפועל בחזית חייבות עכשיו לציית למכסות שלהן בסביבת זמן הריצה. הרשימה הזו כוללת משימות שתזמנתם ישירות באמצעות
JobScheduler
, וגם משימות שנוצרו על ידי ספריות אחרות כמו WorkManager אוDownloadManager
.כדי להעביר נתונים בתגובה לפעולה של משתמש, מומלץ להשתמש במשימה להעברת נתונים ביוזמת משתמש. המשימות האלה פטורות מהמכסות הרגילות של משימות.
Android 15 (רמת API 35)
הדרישות הבאות חלות על אפליקציות שמטרגטות רמת API 35 ואילך:
- יש הגבלות חדשות על משך הזמן ששירות
dataSync
שפועל בחזית יכול לפעול. ההגבלות האלה מתוארות בקטע התנהגות של שירות שפועל בחזית עם זמן קצוב לתפוגה. הגבלות דומות חלות על סוג השירותmediaProcessing
שפועל בחזית (חדש ב-Android 15). - אסור יותר לשירותים שפועלים בחזית מסוג
BOOT_COMPLETED
להפעיל שירותים מסוימים שפועלים בחזית. - אפליקציות עם ההרשאה
SYSTEM_ALERT_WINDOW
יכולות להפעיל שירותים שפועלים בחזית מהרקע רק אם יש להן כרגע חלון שכבת-על גלוי (או אם הן עומדות באחד מהפטורים האחרים מההגבלות על הפעלה ברקע). בעבר, הפטור לאפליקציות האלה היה רחב יותר.
Android 14 (רמת API 34)
הדרישות הבאות חלות על אפליקציות שמטרגטות לרמת API 34 ומעלה:
- עליכם להצהיר על כל השירותים שפועלים בחזית עם סוגי השירותים שלהם.
- אפליקציות צריכות לבקש את סוג ההרשאה המתאים לסוג העבודה שהשירות שפועל בחזית יבצע. לכל סוג של שירות שפועל בחזית יש סוג הרשאה תואם. לדוגמה, אם אפליקציה מפעילה שירות שפועל בחזית שמשתמש במצלמה, צריך לבקש גם את ההרשאות
FOREGROUND_SERVICE
וגם את ההרשאותFOREGROUND_SERVICE_CAMERA
. אם אפליקציה מטרגטת לרמת API 34 ואילך ולא מבקשת את ההרשאה הספציפית המתאימה, המערכת תשליך את השגיאהSecurityException
.
Android 12 (רמת API 31)
הדרישות הבאות חלות על אפליקציות שמטרגטות לרמת API 31 ואילך:
- אסור לאפליקציות להפעיל שירותים שפועלים בחזית כשהן ברקע, מלבד כמה יוצאים מן הכלל. מידע נוסף על ההגבלות האלה ועל החריגים לכלל הזה זמין במאמר הגבלות על הפעלת שירות בחזית מהרקע.
Android 11 (רמת API 30)
הדרישות הבאות חלות על אפליקציות שמטורגטות לרמת API 30 ואילך:
- אם השירותים שפועלים בחזית של האפליקציה משתמשים במצלמה או במיקרופון, האפליקציה צריכה להצהיר על השירות עם סוג השירות
camera
אוmicrophone
, בהתאמה.
Android 10 (רמת API 29)
הדרישות הבאות חלות על אפליקציות שמטרגטות לרמת API 29 ואילך:
- אם שירותים שפועלים בחזית של אפליקציה משתמשים במידע על המיקום, האפליקציה צריכה להצהיר על השירות עם סוג השירות
location
.
Android 9 (רמת API 28)
ב-Android 9 נוספה ההרשאה FOREGROUND_SERVICE
. אפליקציות שפועלות ב-Android 9 ומשתמשות בשירותים שפועלים בחזית חייבות לקבל את ההרשאה הזו.
אם אפליקציה שמטרגטת רמת API 28 ואילך תנסה ליצור שירות שפועל בחזית בלי לבקש את ההרשאה FOREGROUND_SERVICE
, המערכת תשליך הודעת שגיאה מסוג SecurityException
.