सिस्टम, डिवाइस की स्थिति, ऐप्लिकेशन की स्थिति, और ऐप्लिकेशन की स्टैंडबाय बकेट के आधार पर, ऐप्लिकेशन के संसाधनों के अनुरोधों को प्राथमिकता देता है.
Android सिस्टम, संसाधनों की सीमाओं को दो अलग-अलग तरीकों से लागू कर सकता है. संसाधनों के इस्तेमाल को ऑप्टिमाइज़ करने का एक तरीका यह है कि किसी काम को तब तक न करें, जब तक डिवाइस डॉज़ मोड जैसी कम बैटरी वाली स्थिति से बाहर न आ जाए. उदाहरण के लिए, नियमित टास्क और सटीक न होने वाले अलार्म को बाद में चलाया जाता है, ताकि वे डिवाइस के डॉज़ मोड से बाहर आने के बाद चल सकें.
एक और तरीका यह है कि ऐप्लिकेशन के मौजूदा स्टैंडबाय बकेट के आधार पर, ऐप्लिकेशन को डिवाइस को कितनी बार चालू करने और काम करने की अनुमति दी जाए, यह तय किया जा सकता है. सिस्टम, फ़्रीक्वेंसी (ऐप्लिकेशन कितनी बार डिवाइस को चालू करता है) और कुल अवधि (डिवाइस कितनी देर तक चालू रहता है) दोनों को कम कर सकता है. उदाहरण के लिए, अगर ऐप्लिकेशन अतिरिक्त स्टैंडबाय बकेट में है, तो ऐप्लिकेशन 24 घंटे की अवधि में, शेड्यूल की गई जॉब को कुल 10 मिनट तक चला सकता है.
ध्यान दें कि जब ऐप्लिकेशन दिखता नहीं है, तब टास्क शेड्यूल करने के लिए, WorkManager, JobScheduler का इस्तेमाल करता है. इसलिए, टास्क के लिए उपलब्ध संसाधनों की सीमाओं का असर वर्कर्स पर पड़ता है.
पाबंदियों के बारे में ज़्यादा जानने के लिए, ये लेख पढ़ें:
- डिवाइस की स्थिति के आधार पर संसाधनों की सीमाएं
- ऐप्लिकेशन के स्टेटस के आधार पर संसाधनों की सीमाएं
- ऐप्लिकेशन के स्टैंडबाय बकेट के आधार पर संसाधनों की सीमाएं
ध्यान दें कि डिवाइस की स्थिति और ऐप्लिकेशन की स्थिति, ऐप्लिकेशन स्टैंडबाय बकेट की सीमाओं को बदल सकती है. उदाहरण के लिए, अगर डिवाइस चार्ज हो रहा है, तो सिस्टम अतिरिक्त स्टैंडबाई बकेट में मौजूद ऐप्लिकेशन को, 24 घंटे की अवधि में 10 मिनट से ज़्यादा समय तक जॉब करने की अनुमति देता है.
इसके अलावा, इसकी परफ़ॉर्मेंस में भी बदलाव हुए हैं. इन बदलावों का असर संसाधनों की सीमाओं पर भी पड़ा है. ज़्यादा जानने के लिए, Android के व्यवहार में हुए ऐसे बदलाव जिनका असर संसाधन की सीमाओं पर पड़ता है देखें.
डिवाइस की स्थिति के आधार पर संसाधनों की सीमाएं
सिस्टम, डिवाइस की स्थिति के आधार पर संसाधनों की सीमाओं को लागू या हटा भी सकता है. उदाहरण के लिए, चार्ज हो रहा है स्थिति वाले डिवाइस को, ऐप्लिकेशन की स्टैंडबाय बकेट के बावजूद, बिना किसी पाबंदी के संसाधन का ऐक्सेस दिया जाता है.
डिवाइस की स्थिति |
नौकरी |
अलार्म |
नेटवर्क ऐक्सेस |
Firebase क्लाउड संदेश |
चार्ज हो रही है |
प्रतिबंधित स्टैंडबाय बकेट के अलावा, एक साथ कई टास्क करने की कोई सीमा नहीं |
सभी स्टैंडबाय बकेट और प्रोसेस स्टेटस के लिए, एक्ज़ीक्यूशन की कोई सीमा नहीं है. हालांकि, अगर उपयोगकर्ता ने ऐप्लिकेशन की बैटरी पर मैन्युअल रूप से पाबंदी लगाई है, तो यह सीमा लागू नहीं होगी |
कोई पाबंदी नहीं |
कोई पाबंदी नहीं |
स्क्रीन चालू |
एक साथ कई टास्क के लिए स्क्रिप्ट को चलाने की सीमाएं, स्टैंडबाय बकेट के आधार पर लागू की जाती हैं |
ऐप्लिकेशन प्रोसेस और स्टैंडबाय बकेट के आधार पर, प्रोसेस करने की सीमाएं लागू की जाती हैं |
ऐक्सेस, स्टैंडबाय बकेट या ऐप्लिकेशन प्रोसेस की स्थिति पर निर्भर करता है |
कोई पाबंदी नहीं |
स्क्रीन बंद है और 'डॉज़ मोड' चालू है |
स्टैंडबाय बकेट के आधार पर, एक्ज़ीक्यूशन की सीमाएं लागू की जाती हैं. साथ ही, एक्ज़ीक्यूशन को 'डॉज़ मोड' के रखरखाव की विंडो तक के लिए टाल दिया जाता है |
स्टैंडबाय बकेट के आधार पर, प्रोसेस करने की सीमाएं लागू की जाती हैं. सामान्य अलार्म: डोज़ मोड की मेंटेनेंस विंडो के लिए टाला गया डिवाइस के इस्तेमाल में न होने पर मिलने वाले अलार्म: हर घंटे ज़्यादा से ज़्यादा सात अलार्म मिल सकते हैं |
स्लीप मोड के दौरान प्रतिबंधित |
ज़्यादा प्राथमिकता: एक साथ कई टास्क करने की कोई सीमा नहीं सामान्य प्राथमिकता: 'डॉज़ मोड' की मेंटेनेंस विंडो के लिए टाल दिया गया |
ऐप्लिकेशन की स्थिति के आधार पर संसाधनों की सीमाएं
सिस्टम, ऐप्लिकेशन की स्टैंडबाय बकेट के लिए संसाधनों की सीमाएं लागू करता है या नहीं, यह इस बात पर निर्भर करता है कि ऐप्लिकेशन की प्रोसेस कितनी अहम है. प्रोसेस के अलग-अलग लेवल को समझने के लिए, ActivityManager.RunningAppProcessInfo.importance
देखें.
डिवाइस का उपयोगकर्ता, ऐप्लिकेशन के पावर मैनेजमेंट ऑप्टिमाइज़ेशन को मैन्युअल तरीके से बदल सकता है. इससे, ऐप्लिकेशन की स्टैंडबाय बकेट की सीमाएं बदल जाती हैं.
ऐप्लिकेशन की स्थिति |
नौकरी |
अलार्म |
नेटवर्क |
ऐप्लिकेशन प्रोसेस दिख रही हो या फ़ोरग्राउंड में हो |
एक साथ कई टास्क करने की कोई सीमा नहीं |
फ़्रीक्वेंसी की कोई सीमा नहीं |
कोई पाबंदी नहीं |
ऐप्लिकेशन प्रोसेस, फ़ोरग्राउंड सेवा चला रही है |
एक्ज़ीक्यूशन की सीमाएं, स्टैंडबाय बकेट के आधार पर लागू की जाती हैं*** |
फ़्रीक्वेंसी की सीमाएं, स्टैंडबाय बकेट के आधार पर लागू होती हैं |
कोई पाबंदी नहीं |
उपयोगकर्ता ने ऐप्लिकेशन के लिए बैटरी खर्च करने की सीमा मैन्युअल तरीके से तय की है |
प्रोग्राम चलाने पर पाबंदी लगी है |
प्रोग्राम चलाने पर पाबंदी लगी है |
ऐक्सेस, स्टैंडबाय बकेट के व्यवहार पर निर्भर करता है |
उपयोगकर्ता ने ऐप्लिकेशन के लिए, बैटरी खर्च की पाबंदी को मैन्युअल तरीके से हटाया हो |
स्क्रिप्ट को एक साथ कई टास्क के लिए चलाने की सीमा ज़्यादा है*** |
एक साथ कई टास्क करने की कोई सीमा नहीं |
जब तक डिवाइस पर डेटा बचाने की सेटिंग चालू नहीं होती, तब तक बिना किसी पाबंदी के |
*** Android 16 में, जॉब के लिए क्वेटा लागू करने का तरीका बदल गया है. Android 16 से पहले, जब ऐप्लिकेशन कोई फ़ोरग्राउंड सेवा चला रहा था या उपयोगकर्ता ने ऐप्लिकेशन के लिए बैटरी की पाबंदी हटा दी थी, तब ऐप्लिकेशन को चलाने की कोई सीमा नहीं थी.
ऐप्लिकेशन के स्टैंडबाय बकेट के आधार पर, संसाधनों की सीमाएं
ध्यान दें: इस टेबल में दी गई वैल्यू से, यह गारंटी नहीं मिलती कि प्रोसेस कितनी देर चलेगी. ऐसा इसलिए, क्योंकि डिवाइस की अन्य स्थितियों या बकेट में किए गए बदलावों से, संसाधन की कमी पर असर पड़ सकता है. Android के आने वाले वर्शन में भी इन वैल्यू में बदलाव हो सकता है.
ऐप्लिकेशन की स्टैंडबाय बकेट के आधार पर, सामान्य जॉब, जल्दी होने वाले जॉब, अलार्म, और नेटवर्क ऐक्सेस को सीमित किया जा सकता है. जानें कि ऐप्लिकेशन की स्टैंडबाय बकेट, आपके ऐप्लिकेशन पर कैसे असर डालती हैं. इसके लिए, बिजली की खपत को मैनेज करने से जुड़ी इन सीमाओं को दिशा-निर्देश के तौर पर इस्तेमाल करें. बेहतर परफ़ॉर्मेंस के लिए, ऐप्लिकेशन के स्टैंडबाय मोड के सबसे सही तरीकों का पालन करें. साथ ही, टास्क शेड्यूलिंग एपीआई के लिए बैटरी के इस्तेमाल को ऑप्टिमाइज़ करें.
ध्यान दें कि Android 13 से, ऐप्लिकेशन की स्टैंडबाय बकेट से यह तय नहीं होता कि कोई ऐप्लिकेशन, ज़्यादा प्राथमिकता वाले कितने एफ़सीएम का इस्तेमाल कर सकता है.
ऐप्लिकेशन स्टैंडबाय बकेट |
सामान्य नौकरियां* |
जल्दी किए जाने वाले काम** |
अलार्म |
नेटवर्क |
सक्रिय: |
60 मिनट की अवधि में 20 मिनट तक*** |
24 घंटे में 30 मिनट तक*** |
एक साथ कई टास्क करने की कोई सीमा नहीं |
कोई पाबंदी नहीं |
वर्किंग सेट: |
चार घंटे की अवधि में 10 मिनट तक |
24 घंटे के रोलिंग पीरियड में 15 मिनट तक |
हर घंटे 10 बार तक |
कोई पाबंदी नहीं |
अक्सर: |
12 घंटे की अवधि में 10 मिनट तक |
24 घंटे में 10 मिनट तक |
हर घंटे में ज़्यादा से ज़्यादा दो बार |
कोई पाबंदी नहीं |
बहुत कम: |
24 घंटे में 10 मिनट तक |
24 घंटे में 10 मिनट तक |
हर घंटे एक बार |
बंद है |
पाबंदी वाला: |
हर दिन 10 मिनट तक |
24 घंटे की विंडो में ज़्यादा से ज़्यादा पांच मिनट |
हर दिन एक अलार्म, जो कि सटीक समय पर बजने वाला अलार्म या सटीक समय पर न बजने वाला अलार्म हो |
बंद है |
* सामान्य जॉब से उन जॉब के बारे में पता चलता है जो JobScheduler में setUserInitiated(true)
या setExpedited(true)
फ़्लैग या WorkManager में एक्सपेडेटेड वर्कर्स का इस्तेमाल नहीं कर रहे हैं.
** जल्दी से पूरा होने वाले टास्क के लिए, सामान्य टास्क के मुकाबले अलग से समय तय किया जाता है. जल्दी से पूरा होने वाले टास्क के लिए तय की गई समयसीमा खत्म होने के बाद, उन्हें WorkManager में कॉन्फ़िगर किया जा सकता है, ताकि वे सामान्य टास्क के लिए तय की गई समयसीमा के हिसाब से चल सकें.
*** Android 16 में, जॉब के लिए क्वेटा लागू करने का तरीका बदल गया है. Android 16 से पहले, ऐप्लिकेशन के ऐक्टिव स्टैंडबाय बकेट में होने पर, उसे चलाने की कोई सीमा नहीं थी.
Android के काम करने के तरीके में ऐसे बदलाव जिनका असर संसाधनों की सीमाओं पर पड़ता है
Android के इन अपडेट में, ऐप्लिकेशन के लिए संसाधनों की सीमाओं में बदलाव किए गए हैं.
Android 16
JobScheduler के कोटा ऑप्टिमाइज़ेशन के व्यवहार में बदलाव
Android ने इन बातों के आधार पर, सामान्य और तेज़ी से होने वाली जॉब के रनटाइम कोटा में बदलाव किया है:
- ऐप्लिकेशन, ऐप्लिकेशन स्टैंडबाय की किस बकेट में है
- अगर ऐप्लिकेशन टॉप स्टेटस में होने पर, जॉब शुरू हो जाता है
- अगर फ़ोरग्राउंड सेवा के चलने के दौरान जॉब को लागू किया जा रहा है
Android 13
ज़्यादा प्राथमिकता वाले Firebase क्लाउड मैसेज (FCM) कोटा के व्यवहार में बदलाव
- ऐप्लिकेशन स्टैंडबाय बकेट से यह तय नहीं होता कि कोई ऐप्लिकेशन, ज़्यादा प्राथमिकता वाले कितने FCM का इस्तेमाल कर सकता है.
- अगर सिस्टम को पता चलता है कि कोई ऐप्लिकेशन लगातार ज़्यादा प्राथमिकता वाले ऐसे मैसेज भेज रहा है जिनकी वजह से सूचना नहीं मिलती, तो वह अब ज़्यादा प्राथमिकता वाले मैसेज को डाउनग्रेड कर देता है
- ज़्यादा प्राथमिकता वाले मैसेज से जुड़े मौजूदा दिशा-निर्देशों के लिए, मैसेज की प्राथमिकता सेट करने और उसे मैनेज करने के बारे में firebase दस्तावेज़ देखें.
Android 9
ऐप्लिकेशन स्टैंडबाय बकेट की सुविधा लॉन्च की गई
Android 9 में, बैटरी मैनेजमेंट की एक नई सुविधा, ऐप्लिकेशन स्टैंडबाय बकेट जोड़ी गई है. ऐप्लिकेशन के लिए स्टैंडबाय बकेट, सिस्टम को संसाधनों के लिए ऐप्लिकेशन के अनुरोधों को प्राथमिकता देने में मदद करते हैं. यह प्राथमिकता इस आधार पर तय की जाती है कि ऐप्लिकेशन को हाल ही में और कितनी बार इस्तेमाल किया गया है. ऐप्लिकेशन के इस्तेमाल के पैटर्न के आधार पर, हर ऐप्लिकेशन को प्राथमिकता वाली पांच बकेट में से किसी एक में रखा जाता है. सिस्टम, हर ऐप्लिकेशन के लिए डिवाइस के उपलब्ध संसाधनों को सीमित करता है. यह सीमाएं, ऐप्लिकेशन के किस बकेट में होने के आधार पर तय की जाती हैं.