שינויים בשירותים שפועלים בחזית

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

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

Android 16 (רמת API 36)

השינויים הבאים חלים על אפליקציות שפועלות ב-Android 16 ואילך, ללא קשר לרמת ה-API שהן מטרגטות:

  • משימות רקע שהופעלו משירות שפועל בחזית חייבות עכשיו לציית למכסות שלהן בסביבת זמן הריצה. הרשימה הזו כוללת משימות שתזמנתם ישירות באמצעות JobScheduler, וגם משימות שנוצרו על ידי ספריות אחרות כמו WorkManager או DownloadManager.

    כדי להעביר נתונים בתגובה לפעולה של משתמש, מומלץ להשתמש במשימה להעברת נתונים ביוזמת משתמש. המשימות האלה פטורות מהמכסות הרגילות של משימות.

Android 15 (רמת API 35)

הדרישות הבאות חלות על אפליקציות שמטרגטות רמת API 35 ואילך:

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.