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

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