W przypadku urządzeń mobilnych z Androidem obsługa wielu użytkowników pozwala na uruchamianie w tle (gdy inny użytkownik jest aktywny) oraz na pierwszym planie (nazywanym też aktualnego użytkownika). Aby w razie potrzeby oszczędzać zasoby, system zarządza do wyłączania użytkowników. Zawsze wymagany jest 1 użytkownik na pierwszym planie.
Począwszy od Androida 10 domyślna konfiguracja Androida Automotive pozwala na uruchamianie jednocześnie maksymalnie 3 użytkowników (config_multiuserMaxRunningUsers
). Oznacza to, że oprócz bezgłowy użytkownik systemu (użytkownik 0) może być skonfigurowany tylko 1 użytkownik na pierwszym i 1 na drugim planie.
- W typowych okolicznościach bieżący użytkownik działa na pierwszym planie, a bezgłowy użytkownik systemu (użytkownik 0) działa w tle. Gdy użytkownik
przeniesione do tła, użytkownik jest zatrzymany, ale nie zablokowany; Gdy osiągnięta zostanie maksymalna liczba użytkowników, ostatnio używany użytkownik w tle zostanie zatrzymany i zablokowany (
config_multiuserDelayUserDataLocking
). - Zatrzymane i odblokowane procesy w tle są ponownie uruchamiane w trybie garażu.
Użytkownicy goście są tymczasowi i mogą działać tylko w tle. Gdy człowiek przejdzie z trybu gościa, użytkownik gość zostanie zatrzymany i nie może działać w tle.
Procesy użytkownika w tle
Gdy użytkownik przełącza się z pierwszego planu na tło (i odwrotnie), wszystkie jego działania i usługi działające na pierwszym planie danego użytkownika. Spowoduje to przerwanie wszystkich usług powiązanych z tymi usługami. Pozostało jednak trochę oczyszczania. Stały dostęp do usług z aplikacji własnych i aplikacji systemowych OEM jest zachowany tak długo, jak długo użytkownik (obecnie w tle) nie zostanie zatrzymany.
Stałe usługi są bardziej problematyczne, ponieważ usługi znajdują się w zasobniku o wysokim priorytecie na „za mało pamięci” Androida systemu zarządzania. Nawet jeśli aplikacje na pierwszym planie wymagają więcej pamięci, te trwałe procesy w tle nie są zamykane. W efekcie dane użytkownika pierwszego planu że stałe usługi trwale wyczerpują pewną ilość pamięci że pamięć jest zwracana tylko po ponownym uruchomieniu samochodu przez użytkownika aby zatrzymać użytkowników.
Stan użytkownika
Użytkownik jest w stanie zatrzymanym (STATE_SHUTDOWN
), dopóki nie zostanie uruchomiony. Jeśli dane logowania użytkownika (np. kod PIN) są ustawione, użytkownik Androida uruchamia, ale
pozostanie zablokowany (STATE_RUNNING_LOCKED
), dopóki ktoś nie odblokuje ekranu blokady
dla danego użytkownika. Gdy użytkownik odblokuje urządzenie, katalog zaszyfrowanych danych logowania zostanie odszyfrowany, a katalogi danych tego użytkownika staną się dostępne. W przypadku zwykłego przełączania użytkowników użytkownik w tle nie jest zatrzymywany i po odblokowaniu pozostaje uruchomiony i odblokowany (STATE_RUNNING_UNLOCKED
).
Tryb garażu, JobScheduler i aktualizacje aplikacji dla użytkowników
Zalecana technika aktualizowania danych w aplikacjach samochodowych polega na używaniu JobScheduler
do planowania zadań do wykonania, gdy urządzenie jest w stanie bezczynności, w ramach trybu garażu (np. pobieranie aktualizacji aplikacji z Google Play). Po zarejestrowaniu przez aplikacje zadań na platformach JobScheduler
i
JobSchedulerService
gdy jest to możliwe.
CarService wysyła do usługi JobSchedulerService
sygnał, aby aktywować zadania ustawione na uruchomienie
gdy urządzenie samochodowe jest nieaktywne.
w trybie garażowym. Aby JobSchedulerService
mogła wykonywać zadania dla użytkownika w tle, ten musi mieć stan STATE_RUNNING_UNLOCKED
. Zadania umieszczone w kolejce JobSchedulerService
są przechowywane i przetrwają przez cykle zasilania.
JobScheduler
nie może wykonywać zadań dla konkretnego użytkownika, jeśli ten użytkownik nie został odblokowany po cyklu zasilania. Gdy jednak użytkownik zostanie odblokowany i pozostanie w grupie STATE_RUNNING_UNLOCKED
, zadania dla tego użytkownika mogą być wykonywane.