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

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

‫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.