前景服務說明文件說明 Android 前景服務的目前行為。無論應用程式是否指定最新版 Android 為目標版本,這份文件都會提供相關最佳做法。
本頁說明瞭前景服務的部分最新重要變更,以及這對未指定最新版 Android 平台的應用程式所造成的影響。在許多情況下,針對較低 API 級別的應用程式可選用的最佳做法,對於較高 API 級別的應用程式則是強制規定。
Android 9 (API 級別 28)
Android 9 推出 FOREGROUND_SERVICE
權限。在 Android 9 上執行且使用前景服務的應用程式,必須具備該權限。
如果指定 API 級別 28 以上版本為目標版本的應用程式嘗試建立前景服務,但未要求 FOREGROUND_SERVICE
權限,系統就會擲回 SecurityException
。
Android 10 (API 級別 29)
以下規定適用於鎖定 API 級別 29 以上版本的應用程式:
Android 11 (API 級別 30)
以下規定適用於指定 API 級別 30 以上版本的應用程式:
- 如果應用程式的前景服務使用相機或麥克風,則應用程式必須分別使用
camera
或microphone
服務類型宣告服務。
Android 12 (API 級別 31)
以下規定適用於指定 API 級別 31 以上版本的應用程式:
- 應用程式在背景執行時,不得啟動前景服務,但有少數例外情況。如需進一步瞭解這項規則的例外狀況,請參閱「從背景啟動前景服務的限制」。
Android 14 (API 級別 34)
以下規定適用於指定 API 級別 34 以上級別的應用程式:
- 您必須聲明所有前景服務,並附上服務類型。
- 應用程式必須根據前景服務要執行的工作類型,要求適當的權限類型。每個前景服務類型都有對應的權限類型。舉例來說,如果應用程式啟動使用攝影機的前景服務,您必須同時要求
FOREGROUND_SERVICE
和FOREGROUND_SERVICE_CAMERA
權限。如果應用程式指定的 API 級別為 34 以上,但未要求適當的特定權限,系統會擲回SecurityException
。
Android 15 (API 級別 35)
以下規定適用於指定 API 級別 35 以上版本的應用程式:
dataSync
前景服務的執行時間長度有新的限制。如要瞭解這些限制,請參閱「前景服務逾時行為」一文。同樣的限制也適用於 (Android 15 新增)mediaProcessing
前景服務類型。BOOT_COMPLETED
前景服務不再允許啟動特定前景服務。- 擁有
SYSTEM_ALERT_WINDOW
權限的應用程式,只有在目前有可見的疊加畫面視窗 (或符合其他從背景啟動限制的豁免條件) 時,才能從背景啟動前景服務。先前,這些應用程式的豁免範圍較廣。