Di Android seluler, dukungan untuk beberapa pengguna memungkinkan pengguna berjalan di latar belakang (saat pengguna lain aktif) dan di latar depan (juga dikenal sebagai pengguna saat ini). Untuk menghemat resource jika diperlukan, sistem akan mengelola pemutusan pengguna. Satu pengguna latar depan selalu diperlukan.
Mulai Android 10, Android Automotive memiliki
konfigurasi yang mengizinkan maksimum tiga pengguna hanya untuk berjalan pada satu waktu
(config_multiuserMaxRunningUsers
). Oleh karena itu, selain headless
pengguna sistem (Pengguna 0), hanya satu pengguna latar depan dan satu pengguna latar belakang yang dapat dikonfigurasi.
- Dalam situasi normal, pengguna saat ini berjalan di latar depan
dan pengguna sistem headless (Pengguna 0) berjalan di latar belakang. Saat pengguna
dipindahkan ke latar belakang, pengguna dihentikan tetapi tidak terkunci. Saat jumlah maksimum
jumlah pengguna terpenuhi, pengguna latar belakang yang paling
sering digunakan akan dihentikan dan
dikunci (
config_multiuserDelayUserDataLocking
). - Pengguna latar belakang yang dihentikan dan tidak terkunci akan dimulai ulang selama Mode Garasi.
Pengguna tamu bersifat sementara dan hanya dapat berjalan di latar depan. Saat seseorang beralih dari tamu, pengguna tamu akan dihentikan dan tidak dapat berjalan di latar belakang.
Proses pengguna latar belakang
Saat pengguna dialihkan dari latar depan ke latar belakang (dan sebaliknya), semua aktivitas dan layanan latar depan untuk pengguna tersebut dihentikan. Tindakan ini akan menghentikan semua layanan yang terikat dari layanan tersebut. Namun, beberapa pembersihan tetap ada. Layanan persisten dari aplikasi sistem OEM dan pihak pertama terus berjalan selama pengguna (sekarang latar belakang) tidak dihentikan.
Layanan persisten lebih bermasalah, karena layanan dimuat dalam bucket prioritas tinggi di Out of Memory (OOM) Android manajemen sumber daya manusia. Bahkan jika aplikasi untuk pengguna latar depan memerlukan lebih banyak memori, aplikasi proses latar belakang tidak dihentikan. Hasilnya, dari latar depan, sudut pandang, layanan persisten akan secara permanen menghasilkan sejumlah memori dan bahwa memori hanya dikembalikan ketika seseorang me-{i>reboot<i} mobil dan latar belakangnya pengguna dihentikan.
Status pengguna
Pengguna berada dalam status dihentikan (STATE_SHUTDOWN
) hingga pengguna
dimulai. Jika kredensial pengguna (seperti PIN) ditetapkan, pengguna Android akan berjalan, tetapi
tetap terkunci (STATE_RUNNING_LOCKED
) hingga seseorang membuka kunci layar kunci
untuk pengguna tersebut. Saat pengguna membuka kunci, penyimpanan yang dienkripsi dengan kredensial akan didekripsi
dan direktori data untuk pengguna tersebut akan tersedia. Untuk pengalihan pengguna biasa,
pengguna latar belakang tidak dihentikan dan tetap berjalan serta tidak terkunci
(STATE_RUNNING_UNLOCKED
), setelah tidak terkunci.
Mode Garasi, JobScheduler, dan update aplikasi untuk pengguna
Teknik yang direkomendasikan untuk aplikasi Otomotif guna mengupdate data adalah menggunakan JobScheduler
untuk menjadwalkan tugas agar berjalan saat perangkat dalam status tidak ada aktivitas, melalui Mode Garasi (misalnya, mendownload
update aplikasi dari Google Play). Setelah aplikasi mendaftarkan tugas ke JobScheduler
dan
JobSchedulerService
,
tugas-tugas tersebut akan dijalankan
jika memungkinkan.
CarService mengirimkan sinyal ke JobSchedulerService
untuk memicu tugas yang disetel untuk dijalankan
saat perangkat Automotive dalam mode tidak ada aktivitas
melalui Mode Garasi. Agar JobSchedulerService
dapat menjalankan tugas untuk pengguna latar belakang, pengguna
tersebut harus dalam status STATE_RUNNING_UNLOCKED
. Tugas dalam antrean
ke JobSchedulerService
akan dipertahankan dan bertahan di seluruh siklus daya.
JobScheduler
tidak dapat menjalankan tugas untuk pengguna tertentu jika pengguna tidak pernah
terbuka setelah penyalaan ulang. Namun, ketika pengguna tidak terkunci, dan jika pengguna tetap berada
STATE_RUNNING_UNLOCKED
, tugas untuk pengguna dapat dijalankan.