從背景啟動活動的限制

Android 10 (API 級別 29) 以上版本針對應用程式在背景執行時可啟動活動的時間設有限制。這些限制有助於盡量減少對使用者的干擾,讓使用者能進一步掌控螢幕上顯示的內容。

本指南展示通知,做為從背景啟動活動的替代方案。其中也列出不適用限制的特定情況。

改為顯示通知

在幾乎所有情況下,背景應用程式必須顯示具時效性的通知,才能為使用者提供緊急資訊,而不是直接啟動活動。這類通知包括處理來電或啟用的鬧鐘。

這種通知型快訊與提醒系統可為使用者帶來多項好處:

  • 使用裝置時,使用者會看到可做出回應的抬頭通知。使用者會保留目前的背景資訊,並控管畫面上顯示的內容。
  • 具時效性的通知會遵循使用者的「Do Not Disturb」規則。舉例來說,在「零打擾」模式啟用時,使用者只能允許來自特定聯絡人或重複來電者的來電。
  • 裝置的螢幕關閉時,全螢幕意圖會立即啟動。
  • 在裝置的「設定」畫面上,使用者可以查看最近傳送通知的應用程式,包括來自特定通知管道的應用程式。使用者可以在這個畫面中控制其通知偏好設定。

應用程式何時可啟動活動

在 Android 10 以上版本執行的應用程式可在滿足下列一或多項條件時啟動活動:

  • 應用程式有可見視窗,例如前景中的活動。
  • 應用程式在前景工作的返回堆疊中有活動。
  • 「最近使用」畫面上,應用程式現有工作的返回堆疊中存在活動。

  • 應用程式中的活動最近才開始。

  • 最近在活動上呼叫了 finish() 應用程式。這只適用於應用程式在呼叫 finish() 時,在前景有活動,或前景工作返回堆疊中的活動。

  • 應用程式有下列其中一項受到系統繫結的服務。這些服務可能需要啟動 UI。

  • 應用程式設有由其他可見應用程式繫結的服務。應用程式必須持續顯示繫結至該服務,才能在背景成功啟動活動。

  • 應用程式會收到來自系統的通知 PendingIntent。如果是服務和廣播接收器的待處理意圖,應用程式可在送出待處理意圖後幾秒內啟動活動。

  • 應用程式會收到從另一個可見應用程式傳送的 PendingIntent

  • 應用程式會收到系統廣播訊息,指出應用程式應啟動 UI。例如 ACTION_NEW_OUTGOING_CALLSECRET_CODE_ACTION。應用程式可在廣播訊息傳送幾秒鐘後啟動活動。

  • 應用程式透過 CompanionDeviceManager API 與隨附硬體裝置建立關聯。這個 API 可讓應用程式啟動活動,以回應使用者在配對裝置上執行的動作。

  • 應用程式是在裝置擁有者模式中執行的裝置政策控制器。用途範例包括全代管企業裝置,以及數位電子看板和資訊站等專用裝置

  • 應用程式會由使用者授予 SYSTEM_ALERT_WINDOW 權限。