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

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