모바일 Android에서 여러 사용자를 지원하면 사용자가 백그라운드 (다른 사용자가 활성 상태일 때) 및 포그라운드에 있는 (다른 사용자가 활성 상태일 때) 현재 사용자). 해당하는 경우 리소스를 절약하기 위해 시스템에서 사용자 종료를 관리합니다. 포그라운드 사용자 1명이 항상 필요합니다.
Android 10부터 Android Automotive에는 기본값이 있습니다.
한 번에 최대 3명의 사용자가만 실행할 수 있도록 하는 구성
(config_multiuserMaxRunningUsers
) 따라서 헤드리스
시스템 사용자 (사용자 0) - 포그라운드 사용자 한 명과 백그라운드 사용자 한 명만 구성할 수 있습니다.
- 일반적인 상황에서는 현재 사용자가 포그라운드에서 실행되고 헤드리스 시스템 사용자(사용자 0)가 백그라운드에서 실행됩니다. 사용자가
백그라운드로 이동하면 사용자가 중지되지만 잠기지 않습니다. 최대
사용자 수가 충족되면 가장 오래전에 사용한 백그라운드 사용자가 중지되고
잠김 (
config_multiuserDelayUserDataLocking
) - 중지 및 잠금 해제된 백그라운드 사용자는 차고 모드 중에 다시 시작됩니다.
게스트 사용자는 일시적이며 포그라운드에서만 실행할 수 있습니다. 사용자가 게스트에서 전환하면 게스트 사용자가 중지되며 백그라운드에서 실행할 수 없습니다.
백그라운드 사용자 프로세스
사용자가 포그라운드에서 백그라운드로 (또는 그 반대로 전환되면) 모든 활동은 해당 사용자의 포그라운드 서비스 및 포그라운드 서비스가 종료됩니다. 이로 인해 관련 서비스에 바인딩된 모든 서비스가 중지됩니다. 하지만 일부 정리는 유지됩니다. 지속적 서비스가 실행되는 동안 퍼스트 파티 및 OEM 시스템 앱이 (현재 백그라운드) 사용자가 중지되지 않습니다.
영구 서비스는 서비스가 Android의 OOM (메모리 부족)에서 우선순위가 높은 버킷에 포함되어 있음 관리 시스템입니다. 포그라운드 사용자의 앱에 더 많은 메모리가 필요하더라도 백그라운드 프로세스가 종료되지 않습니다 결과적으로 포그라운드 사용자의 영구 서비스가 일정량의 메모리를 영구적으로 소모하고 이 메모리는 누군가 자동차를 재부팅하고 백그라운드를 떠올릴 때만 사용자가 중지됩니다.
사용자 상태
사용자는 정지 상태 (STATE_SHUTDOWN
)로
시작됩니다 사용자 인증 정보(예: PIN)를 설정하면 Android 사용자가 실행되지만, 사용자가 잠금 화면을 잠금 해제할 때까지 잠긴 상태로 유지됩니다(STATE_RUNNING_LOCKED
). 사용자가 잠금 해제되면 사용자 인증 정보 암호화 스토리지가 복호화됩니다.
해당 사용자의 데이터 디렉터리를 사용할 수 있게 됩니다. 일반적인 사용자 전환에서는 백그라운드 사용자가 중지되지 않고 잠금 해제된 후 실행되고 잠금 해제 상태로 유지됩니다(STATE_RUNNING_UNLOCKED
).
사용자를 위한 차고 모드, JobScheduler, 앱 업데이트
Automotive 앱이 데이터를 업데이트하는 데 권장되는 기술은 JobScheduler
를 사용하여 기기가 차고 모드를 통해 유휴 상태에 있을 때 작업을 실행하도록 예약하는 것입니다(예: Google Play에서 앱 업데이트 다운로드). 앱이 JobScheduler
및 JobSchedulerService
에 작업을 등록하면 가능한 경우 작업이 실행됩니다.
CarService는 JobSchedulerService
에 신호를 전송하여 실행하도록 설정된 작업을 트리거합니다.
Automotive 기기가 유휴 상태일 때
차고 모드를 통해
실행할 수 있습니다 JobSchedulerService
가 백그라운드 사용자의 작업을 실행하려면 이 사용자가 STATE_RUNNING_UNLOCKED
상태여야 합니다. JobSchedulerService
에 대기 중인 작업은 지속되며 전원을 껐다 켜도 효력을 유지합니다.
JobScheduler
는 사용자가 전원을 껐다 켠 후 잠금 해제되지 않은 경우 특정 사용자의 작업을 실행할 수 없습니다. 하지만 사용자가 잠금 해제되고 사용자가 STATE_RUNNING_UNLOCKED
에 남아 있으면 사용자의 작업을 실행할 수 있습니다.