前景和背景使用者系統處理

在 Android 行動裝置上,支援多位使用者可讓使用者在背景 (當其他使用者處於活動狀態時) 和前景 (又稱為「目前使用者」) 執行。為了在適當情況下節省資源,系統會管理使用者的關機作業。一律需要一位前景使用者

自 Android 10 起,Android Automotive 會提供預設應用程式 設定僅允許一次最多三位使用者執行 (config_multiuserMaxRunningUsers)。因此,除了無頭容器外 系統使用者 (使用者 0) 只能設定一位前景使用者和一位背景使用者。

  • 在一般情況下,目前的使用者會在前景執行 無頭系統使用者 (使用者 0) 會在背景執行。當使用者 移至背景,此時使用者會被停止,但不會鎖定。達到使用者人數上限時,系統會停止並鎖定最近最少使用的背景使用者 (config_multiuserDelayUserDataLocking)。
  • 停止及解鎖的背景使用者於 車庫模式

訪客使用者是暫時性的,只能在前景執行。當使用者切換至訪客模式時,系統會停止訪客使用者,且無法在背景執行。

背景使用者程序

當使用者從前景切換至背景 (反之亦然) 時,該使用者的所有活動和前景服務都會終止。這會停止所有服務與這些服務的繫結。不過,仍需進行一些清理作業。只要第一方和原始設備製造商 (OEM) 系統應用程式的持續性服務持續執行,且使用者 (現在為背景) 未停止,就會繼續執行。

持續性服務較有問題 服務會包含在 Android 記憶體用盡 (OOM) 的高優先順序值區中 管理系統即使前景使用者的應用程式需要更多記憶體,這些持續的背景程序也不會終止。因此,從前景使用者的 永久服務會永久佔用部分記憶體 只有在人重啟車輛和任何背景時,系統才會傳回記憶體 使用者停止參與。

使用者狀態

使用者處於停止狀態 (STATE_SHUTDOWN),直到使用者為止 已開始。如果已設定使用者憑證 (例如 PIN 碼),Android 使用者則會執行, 鎖定狀態 (STATE_RUNNING_LOCKED),直到使用者解鎖螢幕鎖定為止 該使用者的帳戶當使用者解鎖裝置時,系統會解密其憑證加密儲存空間,並提供該使用者的資料目錄。對於一般使用者切換作業,系統不會停止背景使用者,而是會繼續執行並解鎖 (STATE_RUNNING_UNLOCKED)。

使用者可用的車庫模式、JobScheduler 和應用程式更新

汽車應用程式更新資料的建議做法是使用 JobScheduler,透過車庫模式安排工作,以便在裝置處於閒置狀態時執行 (例如從 Google Play 下載應用程式更新)。應用程式使用 JobSchedulerJobSchedulerService 註冊工作後,系統會在可行時執行工作。

CarService 會傳送信號至 JobSchedulerService,觸發設為執行的工作 汽車裝置處於閒置狀態時 進入車庫模式。JobSchedulerService 必須處於 STATE_RUNNING_UNLOCKED 狀態,才能為背景使用者執行作業。工作排入佇列 進入 JobSchedulerService 後,每次重新啟動都會持續存續。

如果使用者從未接觸使用者,JobScheduler 就無法執行工作 並在重新開機後解鎖。不過,如果使用者解鎖,且仍處於 STATE_RUNNING_UNLOCKED 中,則可執行使用者的工作。