अग्रभूमि और पृष्ठभूमि उपयोगकर्ता सिस्टम हैंडलिंग

मोबाइल एंड्रॉइड में, एकाधिक उपयोगकर्ताओं के लिए समर्थन उपयोगकर्ताओं को पृष्ठभूमि में (जब कोई अन्य उपयोगकर्ता सक्रिय होता है) और अग्रभूमि में (वर्तमान उपयोगकर्ता के रूप में भी जाना जाता है) चलाने में सक्षम बनाता है। उपयुक्त होने पर संसाधनों को संरक्षित करने के लिए, सिस्टम उपयोगकर्ताओं को बंद करने का प्रबंधन करता है। एक अग्रभूमि उपयोगकर्ता की हमेशा आवश्यकता होती है

एंड्रॉइड 10 से शुरू होकर, एंड्रॉइड ऑटोमोटिव में एक समय में अधिकतम तीन उपयोगकर्ताओं को चलाने की अनुमति देने का एक डिफ़ॉल्ट कॉन्फ़िगरेशन है ( config_multiuserMaxRunningUsers )। इसलिए, हेडलेस सिस्टम उपयोगकर्ता (उपयोगकर्ता 0) के अलावा, केवल एक अग्रभूमि उपयोगकर्ता और एक पृष्ठभूमि उपयोगकर्ता को कॉन्फ़िगर किया जा सकता है।

  • विशिष्ट परिस्थितियों में, वर्तमान उपयोगकर्ता अग्रभूमि में चलता है और हेडलेस सिस्टम उपयोगकर्ता (उपयोगकर्ता 0) पृष्ठभूमि में चलता है। एक बार जब उपयोगकर्ता को पृष्ठभूमि में ले जाया जाता है, तो उपयोगकर्ता को रोक दिया जाता है लेकिन लॉक नहीं किया जाता है। जब उपयोगकर्ताओं की अधिकतम संख्या पूरी हो जाती है, तो सबसे कम हाल ही में उपयोग किए गए पृष्ठभूमि उपयोगकर्ता को रोक दिया जाता है और लॉक कर दिया जाता है ( config_multiuserDelayUserDataLocking )।
  • गैराज मोड के दौरान बंद और अनलॉक किए गए बैकग्राउंड उपयोगकर्ताओं को पुनः प्रारंभ किया जाता है।

अतिथि उपयोगकर्ता अल्पकालिक होते हैं और केवल अग्रभूमि में ही चल सकते हैं। जब कोई व्यक्ति अतिथि से बाहर चला जाता है, तो अतिथि उपयोगकर्ता रुक जाता है और पृष्ठभूमि में नहीं चल सकता।

पृष्ठभूमि उपयोगकर्ता प्रक्रियाएँ

जब उपयोगकर्ता अग्रभूमि से पृष्ठभूमि (और इसके विपरीत) पर स्विच करता है, तो उस उपयोगकर्ता के लिए सभी गतिविधियाँ और अग्रभूमि सेवाएँ समाप्त हो जाती हैं। इससे उन सेवाओं से जुड़ी सभी सेवाएं बंद हो जाती हैं। हालाँकि, कुछ सफाई बाकी है। प्रथम पक्ष और ओईएम सिस्टम ऐप्स की लगातार सेवाएँ तब तक चलती रहती हैं जब तक (अब पृष्ठभूमि) उपयोगकर्ता को रोका नहीं जाता है।

लगातार सेवाएँ अधिक समस्याग्रस्त हैं क्योंकि ये सेवाएँ एंड्रॉइड की आउट ऑफ़ मेमोरी (OOM) प्रबंधन प्रणाली में उच्च प्राथमिकता वाली बकेट में शामिल हैं। भले ही अग्रभूमि उपयोगकर्ता के लिए ऐप्स को अधिक मेमोरी की आवश्यकता हो, उन लगातार पृष्ठभूमि प्रक्रियाओं को समाप्त नहीं किया जाता है। परिणामस्वरूप, अग्रभूमि उपयोगकर्ता के दृष्टिकोण से, लगातार सेवाएँ स्थायी रूप से कुछ मात्रा में मेमोरी निकालती हैं और वह मेमोरी केवल तभी वापस आती है जब कोई व्यक्ति कार को रीबूट करता है और किसी भी पृष्ठभूमि उपयोगकर्ता को रोक दिया जाता है।

उपयोगकर्ता स्थिति

उपयोगकर्ता प्रारंभ होने तक उपयोगकर्ता रुकी हुई स्थिति ( STATE_SHUTDOWN ) में रहता है। यदि कोई उपयोगकर्ता क्रेडेंशियल (जैसे पिन) सेट किया गया है, तो एंड्रॉइड उपयोगकर्ता चलता है लेकिन तब तक लॉक रहता है ( STATE_RUNNING_LOCKED ) जब तक कोई व्यक्ति उस उपयोगकर्ता के लिए लॉकस्क्रीन को अनलॉक नहीं करता है। जब उपयोगकर्ता अनलॉक हो जाता है, तो उनका क्रेडेंशियल एन्क्रिप्टेड स्टोरेज डिक्रिप्ट हो जाता है और उस उपयोगकर्ता के लिए डेटा निर्देशिकाएं उपलब्ध हो जाती हैं। विशिष्ट उपयोगकर्ता स्विचिंग के लिए, पृष्ठभूमि उपयोगकर्ता बंद नहीं होता है और अनलॉक होने के बाद चालू और अनलॉक ( STATE_RUNNING_UNLOCKED ) रहता है।

उपयोगकर्ताओं के लिए गैराज मोड, जॉब शेड्यूलर और ऐप अपडेट

डेटा अपडेट करने के लिए ऑटोमोटिव ऐप्स के लिए अनुशंसित तकनीक गैराज मोड (उदाहरण के लिए, Google Play Store से ऐप अपडेट डाउनलोड करना) के माध्यम से डिवाइस के निष्क्रिय स्थिति में चलने के लिए जॉब शेड्यूल करने के लिए जॉब शेड्यूलर का उपयोग करना है। ऐप्स द्वारा जॉब शेड्यूलर और जॉब शेड्यूलर सर्विस के साथ जॉब पंजीकृत करने के बाद, जब भी संभव हो जॉब चलायी जाती है।

गैरेज मोड के माध्यम से ऑटोमोटिव डिवाइस के निष्क्रिय होने पर चलने के लिए सेट की गई नौकरियों को ट्रिगर करने के लिए CarService जॉब शेड्यूलर सर्विस को एक सिग्नल भेजता है। JobSchedulerService के लिए पृष्ठभूमि उपयोगकर्ताओं के लिए कार्य चलाने के लिए, वह उपयोगकर्ता STATE_RUNNING_UNLOCKED स्थिति में होना चाहिए। JobSchedulerService में कतारबद्ध नौकरियां बनी रहती हैं और पावर चक्रों के दौरान जीवित रहती हैं।

यदि उपयोगकर्ता को पावर चक्र के बाद कभी अनलॉक नहीं किया गया तो जॉब शेड्यूलर किसी विशिष्ट उपयोगकर्ता के लिए कार्य नहीं चला सकता है। हालाँकि, एक बार अनलॉक होने पर, और यदि उपयोगकर्ता STATE_RUNNING_UNLOCKED में रहता है, तो उपयोगकर्ता के लिए नौकरियां चलाई जा सकती हैं।