Android 10 (API 級別 29) 以上版本限制應用程式可啟動的時間限制 活動 背景工作。這些限制有助於盡量減少使用者造成的干擾, 可讓使用者進一步掌控畫面上顯示的內容
本指南將顯示通知,做為從下列來源開始活動的替代選項: 背景工作。並列出不受限制影響的具體情況 或
改為顯示通知
幾乎所有情況下,在背景執行的應用程式都必須 顯示有時效性的通知 提供緊急資訊給使用者,而不是直接啟動活動。 這類通知包括處理來電或執行中的鬧鐘 時鐘。
這項通知式快訊和提醒系統具有以下優點: 使用者:
- 使用裝置時,系統會顯示抬頭通知,提醒使用者 回應。使用者會保留目前的內容,並能掌控 自己的內容。
- 具時效性的通知會遵循使用者的 零打擾規則。適用對象 舉例來說,使用者可能只允許來自特定聯絡人或重複來電 來電者。
- 裝置螢幕關閉時,會啟動全螢幕意圖 立即生效
- 使用者可以在裝置的「設定」畫面中查看哪些應用程式具備 最近傳送的通知,包括來自特定通知管道的通知。 在這個畫面中,使用者可以控管自己的通知偏好設定。
應用程式可啟動活動的時機
在 Android 10 以上版本中執行的應用程式可在以下情況啟動活動: 符合下列一或多項條件:
- 應用程式有可見視窗,例如在前景的活動。
- 應用程式具有一項活動 返回堆疊 前景任務
應用程式位於現有工作的返回堆疊中 最近的畫面:
應用程式有最近才開始的活動。
以下裝置名為
finish()
的應用程式: 最近一個活動這僅適用於 前景中的活動,或 呼叫finish()
時發生的前景工作。應用程式具有下列其中一項受到系統繫結的服務。這些 服務可能需要啟動 UI
AccessibilityService
AutofillService
CallRedirectionService
HostApduService
InCallService
TileService
(不適用於 Android 14 (API 級別 34) 以上版本)VoiceInteractionService
VrListenerService
。
應用程式有與其他可見應用程式繫結的服務。應用程式 應用程式必須持續在背景顯示繫結狀態,才能 成功啟動活動。
應用程式收到通知 從系統送出
PendingIntent
。於 如果是服務和廣播接收器的待處理意圖 則在待處理意圖傳送後的幾秒鐘內就能啟動活動。應用程式收到從另一個可見的
PendingIntent
傳來的 應用程式。應用程式會收到系統廣播訊息,預期應用程式會在廣播訊息中啟動 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型例如
ACTION_NEW_OUTGOING_CALL
和SECRET_CODE_ACTION
. 應用程式可以在廣播訊息傳送後的幾秒鐘內啟動活動。應用程式透過以下方式與隨附硬體裝置建立關聯:
CompanionDeviceManager
也能使用 Google Cloud CLI 或 Compute Engine API這個 API 可讓應用程式啟動活動,以回應 使用者在配對的裝置上執行。應用程式是會在以下位置執行的裝置政策控制器: 裝置擁有者模式。用途範例包括 全代管企業裝置 以及數位等專用裝置 或資訊站
應用程式已取得使用者
SYSTEM_ALERT_WINDOW
權限。
透過 PendingIntent 啟動活動時必須選擇採用
為了避免發生意外活動,系統將根據 條件,從 Android 14 開始提供明確的 API 選擇是否要在「活動」開始時授予應用程式權限。
指定 Android 15 以上版本的應用程式將預設為不再默示
授予 PendingIntents
背景活動啟動 (BAL) 權限
建立。以下為需要明確選擇採用的選項
視應用程式傳送或建立 PendingIntents
而定。
PendingIntent 的寄件者
如果應用程式指定 Android 14 以上版本為目標,且想啟動「PendingIntent
」,就必須這麼做
- 符合所列條件,「並且」
- 選擇允許根據這些例外狀況啟動背景活動
「只有」在應用程式開發人員知道應用程式的情況下, 系統就會開始一項活動
如要選擇加入,應用程式應透過以下項目傳遞 ActivityOptions
組合:
setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
呼叫 PendingIntent.send()
或類似方法。
PendingIntent 的建立者
如果應用程式指定 Android 15 以上版本並建立 PendingIntent
,現在必須
如果有需要的話,請明確選擇允許啟動背景活動
可在所列條件下啟動 PendingIntents
。
在大多數情況下,啟動 PendingIntent
的應用程式應為選擇加入的應用程式。
不過,如果建立應用程式需要授予下列權限:
- 您隨時可以在建立應用程式的顯示位置啟動
PendingIntent
。 - 如果建立的應用程式具有特殊特性,您隨時可以啟動
PendingIntent
權限。
如要選擇加入,應用程式應透過以下項目傳遞 ActivityOptions
組合:
將 setPendingIntentCreatorBackgroundActivityStartMode
(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
設為
PendingIntent.getActivity()
或類似方法。
詳情請參閱相關參考說明文件:
ActivityOptions.setPendingIntentBackgroundActivityStartMode
ActivityOptions.setPendingIntentCreatorBackgroundActivityStartMode