ใน Android บนอุปกรณ์เคลื่อนที่ การรองรับผู้ใช้หลายคนช่วยให้ผู้ใช้สามารถทำงานในเบื้องหลัง (เมื่อผู้ใช้รายอื่นใช้งานอยู่) และในเบื้องหน้า (หรือที่เรียกว่าผู้ใช้ปัจจุบัน) ระบบจะจัดการการปิดผู้ใช้เพื่อประหยัดทรัพยากรตามความเหมาะสม ต้องมีผู้ใช้ที่ทำงานอยู่เบื้องหน้า 1 คนเสมอ
ตั้งแต่ Android 10 เป็นต้นไป Android Automotive จะมีค่าเริ่มต้น
การกำหนดค่าที่อนุญาตให้ผู้ใช้สูงสุด 3 รายทำงานพร้อมกันเท่านั้น
(config_multiuserMaxRunningUsers
) ดังนั้น นอกจากโฆษณาแบบไม่มีส่วนหัว
ผู้ใช้ระบบ (ผู้ใช้ 0) สามารถกำหนดค่าผู้ใช้เบื้องหน้าและผู้ใช้เบื้องหลังได้เพียง 1 คนเท่านั้น
- ในสถานการณ์ทั่วไป ผู้ใช้ปัจจุบันจะทำงานในเบื้องหน้า
และผู้ใช้ระบบแบบไม่มีส่วนหัว (User 0) จะทำงานในเบื้องหลัง เมื่อผู้ใช้คือ
ย้ายไปไว้เบื้องหลัง ผู้ใช้ถูกหยุดแต่ไม่ล็อก เมื่อผู้ใช้ครบจำนวนสูงสุด ระบบจะหยุดและล็อกผู้ใช้เบื้องหลังที่ใช้ล่าสุด (
config_multiuserDelayUserDataLocking
) - ผู้ใช้ในเบื้องหลังที่หยุดและปลดล็อกแล้วจะรีสตาร์ทระหว่าง โหมดโรงรถ
ผู้ใช้ชั่วคราวจะมีอายุสั้นและทำงานได้เฉพาะในเบื้องหน้า เมื่อผู้ใช้ ออกจากโหมดผู้มาเยือน ผู้ใช้ที่เป็นผู้มาเยือนจะหยุดทำงานและไม่ทำงานในเบื้องหลัง
กระบวนการของผู้ใช้ในเบื้องหลัง
เมื่อผู้ใช้เปลี่ยนจากเบื้องหน้าเป็นเบื้องหลัง (และในทางกลับกัน) ระบบจะสิ้นสุดกิจกรรมและบริการเบื้องหน้าทั้งหมดของผู้ใช้รายนั้น ป้ายนี้จะหยุด บริการทั้งหมดที่มีผลผูกพันจากบริการเหล่านี้ แต่ยังคงมีการล้างข้อมูลอยู่ บริการแบบถาวรจากแอประบบของบุคคลที่หนึ่งและ OEM จะทํางานต่อไปตราบใดที่ผู้ใช้ (ตอนนี้อยู่เบื้องหลัง) ไม่ได้หยุด
บริการถาวรมักจะเป็นปัญหามากกว่า เนื่องจาก อยู่ในที่เก็บข้อมูลที่มีลำดับความสำคัญสูงในหน่วยความจำหมด (OOM) ของ Android ระบบจัดการเนื้อหา แม้ว่าแอปสำหรับผู้ใช้ที่ทำงานอยู่เบื้องหน้าจะใช้หน่วยความจำมากขึ้น ยังไม่สิ้นสุดกระบวนการเบื้องหลัง ดังนั้น จากผู้ใช้เบื้องหน้า ในมุมมอง บริการถาวรจะแยกหน่วยความจำบางส่วนออกไป ความทรงจำดังกล่าวจะส่งกลับมาก็ต่อเมื่อผู้ใช้รีบูตรถและพื้นหลัง ผู้ใช้หยุดลง
สถานะผู้ใช้
ผู้ใช้อยู่ในสถานะหยุด (STATE_SHUTDOWN
) จนกว่าผู้ใช้จะ
เริ่มทำงานแล้ว หากตั้งค่าข้อมูลเข้าสู่ระบบของผู้ใช้ (เช่น PIN) ไว้ ผู้ใช้ Android จะทำงานแต่ยังคงล็อกอยู่ (STATE_RUNNING_LOCKED
) จนกว่าผู้ใช้รายนั้นจะปลดล็อกหน้าจอล็อก เมื่อปลดล็อกผู้ใช้แล้ว ระบบจะถอดรหัสพื้นที่เก็บข้อมูลที่เข้ารหัสข้อมูลเข้าสู่ระบบของผู้ใช้รายนั้น และไดเรกทอรีข้อมูลของผู้ใช้รายดังกล่าวจะพร้อมใช้งาน สําหรับการเปลี่ยนผู้ใช้ทั่วไป ระบบจะไม่หยุดผู้ใช้ในเบื้องหลังและจะยังคงทํางานอยู่และปลดล็อกอยู่ (STATE_RUNNING_UNLOCKED
) เมื่อปลดล็อกแล้ว
โหมด Garage, JobScheduler และการอัปเดตแอปสำหรับผู้ใช้
เทคนิคที่แนะนำสำหรับแอปยานยนต์ในการอัปเดตข้อมูลคือการใช้ JobScheduler
เพื่อกำหนดเวลาให้งานทำงานเมื่ออุปกรณ์อยู่ในสถานะไม่มีการใช้งานผ่านโหมดโรงรถ (เช่น การดาวน์โหลดการอัปเดตแอปจาก Google Play) หลังจากแอปลงทะเบียนงานด้วย JobScheduler
และ JobSchedulerService
แล้ว ระบบจะเรียกใช้งานเมื่อเป็นไปได้
CarService ส่งสัญญาณไปยัง JobSchedulerService
เพื่อทริกเกอร์งานที่กําหนดให้ทํางานเมื่ออุปกรณ์ยานยนต์ไม่มีการใช้งานผ่านโหมดโรงรถ หากต้องการให้ JobSchedulerService
เรียกใช้งานสําหรับผู้ใช้ที่ทำงานอยู่เบื้องหลัง ผู้ใช้ดังกล่าวต้องอยู่ในสถานะ STATE_RUNNING_UNLOCKED
งานอยู่ในคิวแล้ว
ใน JobSchedulerService
จะคงอยู่และคงอยู่ตลอดรอบพลังงาน
JobScheduler
ไม่สามารถเรียกใช้งานสําหรับผู้ใช้ที่เฉพาะเจาะจงได้หากผู้ใช้ไม่เคยปลดล็อกหลังจากปิด/เปิดเครื่อง อย่างไรก็ตาม เมื่อปลดล็อกผู้ใช้แล้ว และหากผู้ใช้ยังคงอยู่ใน STATE_RUNNING_UNLOCKED
ระบบจะเรียกใช้งานของผู้ใช้ได้