Ön plan ve arka plan kullanıcı sistemi işlemleri

Mobil Android'de birden fazla kullanıcı desteği, kullanıcıların arka planda (başka bir kullanıcı etkinken) ve ön planda (mevcut kullanıcı olarak da bilinir) çalışmasını sağlar. Sistem, uygun olduğunda kaynakları korumak için kullanıcıların kapatılmasını yönetir. Her zaman bir ön plan kullanıcısı gerekir.

Android 10'dan itibaren Android Automotive, aynı anda en fazla üç kullanıcının (config_multiuserMaxRunningUsers) çalışmasına izin veren varsayılan bir yapılandırmaya sahiptir. Bu nedenle, başsız sistem kullanıcısına (Kullanıcı 0) ek olarak yalnızca bir ön plan kullanıcısı ve bir arka plan kullanıcısı yapılandırılabilir.

  • Normal durumlarda, mevcut kullanıcı ön planda, başsız sistem kullanıcısı (Kullanıcı 0) ise arka planda çalışır. Arka plana taşınan kullanıcılar durdurulur ancak kilitlenmez. Maksimum kullanıcı sayısına ulaşıldığında, en son kullanılmayan arka plan kullanıcısı durdurulur ve kilitlenir (config_multiuserDelayUserDataLocking).
  • Durdurulan ve kilidi açılan arka plan kullanıcıları Garaj Modu sırasında yeniden başlatılır.

Misafir kullanıcılar geçicidir ve yalnızca ön planda çalışabilir. Bir kullanıcı misafir modundan çıktığında misafir kullanıcı durdurulur ve arka planda çalışamaz.

Arka plan kullanıcı işlemleri

Bir kullanıcı ön plandan arka plana (veya arka plandan ön plana) geçtiğinde, söz konusu kullanıcının tüm etkinlikleri ve ön plan hizmetleri sonlandırılır. Bu işlem, bu hizmetlerden bağlanan tüm hizmetleri durdurur. Ancak bazı temizlik işlemleri yapılması gerekiyor. Birinci taraf ve OEM sistem uygulamalarından gelen kalıcı hizmetler, kullanıcı (artık arka planda) durdurulmadıkça çalışmaya devam eder.

Android'in Bellek Dolu (OOM) yönetim sisteminde yüksek öncelikli bir pakette yer aldıklarından kalıcı hizmetler daha sorunludur. Ön plan kullanıcısı için uygulamalar daha fazla bellek gerektirse bile bu kalıcı arka plan işlemleri sonlandırılmaz. Sonuç olarak, ön plandaki kullanıcının bakış açısından kalıcı hizmetler kalıcı olarak belirli bir miktarda bellek ayırır ve bu bellek yalnızca bir kullanıcı arabayı yeniden başlattığında ve arka plandaki kullanıcılar durdurulduğunda iade edilir.

Kullanıcı durumu

Kullanıcı başlatılana kadar durdurulmuş durumda (STATE_SHUTDOWN) kalır. Bir kullanıcı kimlik bilgisi (PIN gibi) ayarlanmışsa Android kullanıcısı çalışır ancak bir kullanıcı kilit ekranını açana kadar kilitli kalır (STATE_RUNNING_LOCKED). Kullanıcının kilidi açıldığında kimlik bilgisi şifrelenmiş depolama alanının şifresi çözülür ve söz konusu kullanıcının veri dizinleri kullanılabilir hale gelir. Normal kullanıcı geçişlerinde arka plandaki kullanıcı durdurulmaz ve kilidi açıldıktan sonra çalışmaya ve kilidi açık (STATE_RUNNING_UNLOCKED) olarak kalır.

Kullanıcılar için Garaj Modu, JobScheduler ve uygulama güncellemeleri

Automotive uygulamalarının verileri güncellemesi için önerilen teknik, Garaj Modu aracılığıyla cihaz boş durumdayken çalışacak işleri planlamak için JobScheduler kullanmaktır (ör. Google Play'den uygulama güncellemeleri indirme). Uygulamalar işleri JobScheduler ve JobSchedulerService'e kaydettikten sonra işler mümkün olduğunda çalıştırılır.

CarService, Otomotiv cihazı Garaj Modu'nda devre dışıyken çalışacak şekilde ayarlanan işleri tetiklemek için JobSchedulerService'e sinyal gönderir. JobSchedulerService'ün arka plandaki bir kullanıcı için iş çalıştırabilmesi için söz konusu kullanıcının STATE_RUNNING_UNLOCKED durumunda olması gerekir. JobSchedulerService'e sıraya eklenen işler kalıcı olur ve güç döngüleri boyunca devam eder.

JobScheduler, güç döngüsü sonrasında kullanıcının kilidi hiç açılmadıysa belirli bir kullanıcı için iş çalıştıramaz. Ancak kullanıcının kilidi açıldığında ve kullanıcı STATE_RUNNING_UNLOCKED'te kalırsa kullanıcı için işler çalıştırılabilir.