前景服務說明文件說明 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 以上的應用程式:
Android 9 (API 級別 28)
Android 9 推出 FOREGROUND_SERVICE 權限。在 Android 9 上執行且使用前景服務的應用程式必須具備該權限。
如果指定 API 級別 28 以上的應用程式嘗試建立前景服務,但未要求 FOREGROUND_SERVICE 權限,系統會擲回 SecurityException。