במסמכי העזרה בנושא שירותים שפועלים בחזית מתואר אופן הפעולה הנוכחי של שירותים שפועלים בחזית ב-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
.