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