Verarbeitung von Nutzersystemen im Vordergrund und im Hintergrund

Bei Android-Mobilgeräten ermöglicht die Unterstützung mehrerer Nutzer die Ausführung in der im Hintergrund (wenn ein anderer Nutzer aktiv ist) und im Vordergrund (auch bekannt als aktuellen Nutzer). Um bei Bedarf Ressourcen zu sparen, verwaltet das System das Herunterfahren der Nutzer. Es ist immer ein Nutzer im Vordergrund erforderlich.

Ab Android 10 können unter Android Automotive standardmäßig nur drei Nutzer gleichzeitig ausgeführt werden (config_multiuserMaxRunningUsers). Daher können neben dem headless-Systemnutzer (Nutzer 0) nur ein Nutzer im Vordergrund und ein Nutzer im Hintergrund konfiguriert werden.

  • Normalerweise wird der aktuelle Nutzer im Vordergrund und der headless Systemnutzer (Nutzer 0) im Hintergrund ausgeführt. Wenn ein Nutzer in den Hintergrund verschoben wird, wird er angehalten, aber nicht gesperrt. Wenn der Maximalwert erfüllt ist, wird der zuletzt verwendete Nutzer im Hintergrund beendet und gesperrt (config_multiuserDelayUserDataLocking).
  • Gestoppte und entsperrte Hintergrundnutzer werden während des Garagentormodus neu gestartet.

Gastnutzer sind temporär und können nur im Vordergrund ausgeführt werden. Wenn eine Person den Gastzugriff beendet, wird der Gastnutzer beendet und kann nicht mehr im Hintergrund ausgeführt werden.

Hintergrundprozesse von Nutzern

Wenn ein Nutzer vom Vordergrund zum Hintergrund wechselt (und umgekehrt), werden alle Aktivitäten und Dienste im Vordergrund für diesen Nutzer beendet werden. Dadurch werden alle Dienste angehalten, die von diesen Diensten gebunden sind. Ein Teil der Aufräumarbeiten bleibt jedoch erhalten. Dauerhaft Dienste von eigenen und OEM-System-Apps laufen weiter, der Nutzer (jetzt im Hintergrund) nicht aufgehalten wird.

Dauerhafte Dienste sind problematischer, da sie im OOM-Verwaltungssystem (Out of Memory) von Android in einem Bucket mit hoher Priorität enthalten sind. Auch wenn Apps für den Nutzer im Vordergrund mehr Arbeitsspeicher benötigen, werden diese persistenten Hintergrundprozesse nicht beendet. Deshalb kann der Nutzer Die persistenten Dienste besorgen dauerhaft Speicherkapazitäten und Diese Erinnerung wird nur zurückgegeben, wenn eine Person das Auto und den Hintergrund neu startet. dass Nutzer gestoppt werden.

Nutzerstatus

Ein Nutzer befindet sich im Status „Angehalten“ (STATE_SHUTDOWN), bis er gestartet wird. Wenn Anmeldedaten für einen Nutzer (z. B. eine PIN) festgelegt sind, wird der Android-Nutzer ausgeführt, bleibt aber gesperrt (STATE_RUNNING_LOCKED), bis eine Person den Sperrbildschirm für diesen Nutzer entsperrt. Wenn der Nutzer entsperrt ist, wird sein mit Anmeldedaten verschlüsselter Speicher entschlüsselt. und die Datenverzeichnisse für diesen Nutzer werden verfügbar. Für einen typischen Nutzerwechsel Der Hintergrundnutzer wird nicht angehalten und bleibt ausgeführt und entsperrt. (STATE_RUNNING_UNLOCKED), sobald das Gerät entsperrt wurde.

Garagenmodus, JobScheduler und App-Updates für Nutzer

Für Automobil-Apps wird zum Aktualisieren von Daten die Verwendung von JobScheduler empfohlen. um Jobs zu planen, die ausgeführt werden, wenn sich ein Gerät im inaktiven Zustand befindet, über den Garage-Modus (z. B. Download von App-Updates von Google Play). Nachdem Apps Jobs bei JobScheduler und JobSchedulerService registriert haben, werden die Jobs nach Möglichkeit ausgeführt.

CarService sendet ein Signal an JobSchedulerService, um auszuführende Jobs auszulösen wenn das Automotive-Gerät inaktiv ist über den Garagenmodus. Damit JobSchedulerService Jobs für einen Nutzer im Hintergrund ausführen kann, muss dieser Nutzer den Status STATE_RUNNING_UNLOCKED haben. Jobs, die in JobSchedulerService anstehen, werden beibehalten und überstehen mehrere Ein-/Ausschaltzyklen.

JobScheduler kann keine Jobs für einen bestimmten Nutzer ausführen, wenn dieser Nutzer noch nie nach dem Aus- und wieder entriegelt werden. Wenn der Nutzer entsperrt ist und er STATE_RUNNING_UNLOCKED können Jobs für den Nutzer ausgeführt werden.