Android 9 (एपीआई लेवल 28) और उसके बाद के वर्शन पर, ऐप्लिकेशन स्टैंडबाय मोड की सुविधा काम करती है. ऐप्लिकेशन स्टैंडबाय बकेट, सिस्टम को यह प्राथमिकता देने में मदद करती है कि इसके आधार पर, संसाधनों के लिए किए गए अनुरोध हाल ही में और उनका इस्तेमाल कितनी बार किया जाता है. ऐप्लिकेशन के इस्तेमाल के पैटर्न के हिसाब से, ऐप्लिकेशन को पांच प्राथमिकता वाले बकेट में से किसी एक में रखा गया है. सिस्टम, डिवाइस को सीमित करता है ऐप्लिकेशन किस बकेट में है, इसके आधार पर हर ऐप्लिकेशन के लिए उपलब्ध संसाधन.
प्राथमिकता बकेट
सिस्टम, डाइनैमिक तौर पर हर ऐप्लिकेशन को प्राथमिकता बकेट में असाइन करता है. ऐसा करते हुए, किसी भी समय ऐप्लिकेशन का इस्तेमाल कर सकते हैं. सिस्टम, पहले से लोड किए गए ऐसे ऐप्लिकेशन पर निर्भर हो सकता है जो मशीन का इस्तेमाल करता है हर ऐप्लिकेशन के इस्तेमाल की संभावना का पता लगाता है और सही बकेट मिल जाएंगी.
अगर सिस्टम ऐप्लिकेशन डिवाइस पर मौजूद नहीं है, तो सिस्टम डिफ़ॉल्ट रूप से क्रम से लगाता है तय करेगा कि आपका ऐप्लिकेशन हाल ही में कब इस्तेमाल किया गया है. ज़्यादा चालू ऐप्लिकेशन असाइन किए जाते हैं उन बकेट तक पहुंच सकते हैं जो उन्हें ज़्यादा प्राथमिकता देती हैं, जिससे सिस्टम के ज़्यादा संसाधन बन जाते हैं ऐप्लिकेशन पर उपलब्ध हो. खास तौर पर, बकेट तय करती है कि ऐप्लिकेशन के जॉब चलाए जाते हैं और यह बताया जाता है कि ऐप्लिकेशन कितनी बार अलार्म ट्रिगर कर सकता है. ये पाबंदियां सिर्फ़ तब लागू होती हैं, जब डिवाइस बैटरी पावर पर हो. जब डिवाइस चार्ज हो रहा हो, सिस्टम ये पाबंदियां लागू नहीं करता.
प्राथमिकता बकेट नीचे दी गई हैं:
- चालू: ऐप्लिकेशन का इस्तेमाल किया जा रहा है या हाल ही में इसका इस्तेमाल किया गया है.
- वर्किंग सेट: ऐप्लिकेशन का नियमित तौर पर इस्तेमाल किया जा रहा है.
- अक्सर: ऐप्लिकेशन का इस्तेमाल अक्सर किया जाता है, लेकिन हर दिन नहीं.
- कभी-कभी मिलने वाले ऐप्लिकेशन: ऐप्लिकेशन का अक्सर इस्तेमाल नहीं किया जाता है.
- पाबंदी लगी है: ऐप्लिकेशन बहुत ज़्यादा सिस्टम रिसॉर्स का इस्तेमाल करता है या हो सकता है कि ऐप्लिकेशन पर डेटा दिखे अनचाहा व्यवहार.
इन प्राथमिकता बकेट के अलावा, आपके लिए एक खास कभी नहीं बकेट है ऐसे ऐप्लिकेशन जो इंस्टॉल तो हैं, लेकिन कभी काम नहीं करते. सिस्टम इन ऐप्लिकेशन पर गंभीर पाबंदियां लगाता है.
यहां दिए गए ब्यौरे, अनुमान न लगाने वाले मामले के लिए हैं. इसके उलट, जब व्यवहार का अनुमान लगाने के लिए मशीन लर्निंग का इस्तेमाल किया जाता है, तो बकेट को हाल ही के इस्तेमाल के आधार पर नहीं, बल्कि उपयोगकर्ता की अगली कार्रवाइयों के अनुमान के आधार पर चुना जाता है. उदाहरण के लिए, हाल ही में इस्तेमाल किया गया ऐप्लिकेशन, 'अतिरिक्त' बकेट में जा सकता है. ऐसा इसलिए होता है, क्योंकि मशीन लर्निंग का अनुमान होता है कि ऐप्लिकेशन का इस्तेमाल कई घंटों तक नहीं किया जा सकता.
चालू है
जब किसी ऐप्लिकेशन का इस्तेमाल किया जाता है, हाल ही में इस्तेमाल किया जाता है या वह इनमें से कोई कार्रवाई करता है, तो वह सक्रिय बकेट में शामिल होता है:
- कोई गतिविधि लॉन्च करता है.
- लंबे समय तक चलने वाली फ़ोरग्राउंड सेवा का इस्तेमाल करती है.
- उपयोगकर्ता ने सूचना पर टैप किया हो.
अगर कोई ऐप्लिकेशन चालू बकेट में है, तो सिस्टम उस ऐप्लिकेशन के जॉब या अलार्म पर कोई पाबंदी नहीं लगाता.
उपयोगकर्ता इंटरैक्शन, ऐप्लिकेशन को 'सक्रिय' के तौर पर असाइन करता है
Android 9 (एपीआई लेवल 28) और उसके बाद के वर्शन पर, जब उपयोगकर्ता आपके ऐप्लिकेशन से कुछ तरीकों से, सिस्टम आपके ऐप्लिकेशन को कुछ समय के लिए ऐक्टिव बकेट में डाल देता है. जब उपयोगकर्ता आपके ऐप्लिकेशन से इंटरैक्ट करना बंद कर देता है, तब सिस्टम उसे इस्तेमाल के इतिहास के आधार पर बकेट.
सिस्टम के इस व्यवहार को ट्रिगर करने वाले इंटरैक्शन के उदाहरण यहां दिए गए हैं:
उपयोगकर्ता उस सूचना पर टैप करता है जो आपका ऐप्लिकेशन भेजता है.
उपयोगकर्ता मीडिया पर टैप करके, आपके ऐप्लिकेशन में फ़ोरग्राउंड सेवा से इंटरैक्ट करता है बटन पर क्लिक करें.
Android Automotive से इंटरैक्ट करते समय, उपयोगकर्ता आपके ऐप्लिकेशन से कनेक्ट होता है OS, जहां आपका ऐप्लिकेशन फ़ोरग्राउंड सेवा का इस्तेमाल करता है या
CONNECTION_TYPE_PROJECTION
.
वर्किंग सेट
अगर कोई ऐप्लिकेशन अक्सर चलता है, लेकिन वह चालू नहीं होता, तो वह वर्किंग सेट बकेट में होता है. उदाहरण के लिए, जब उपयोगकर्ता किसी सोशल मीडिया ऐप्लिकेशन को रोज़ लॉन्च करता है, तो काम नहीं करते. अगर ऐप्लिकेशन का इस्तेमाल किसी दूसरे ऐप्लिकेशन के ज़रिए किया जाता है, तो उन्हें भी वर्किंग सेट की बकेट में प्रमोट किया जाता है.
अगर कोई ऐप्लिकेशन अपने-आप काम करने वाले सेट में होता है, तो सिस्टम काम करने और अलार्म ट्रिगर करने की सुविधा. ज़्यादा जानकारी के लिए, पावर मैनेजमेंट से जुड़ी पाबंदियां लेख पढ़ें.
अक्सर
अगर किसी ऐप्लिकेशन का नियमित तौर पर इस्तेमाल किया जाता है, लेकिन ज़रूरी नहीं है कि उसका इस्तेमाल हर दिन किया जाए, तो उसे अक्सर इस्तेमाल किए जाने वाले ऐप्लिकेशन की कैटगरी में रखा जाता है. उदाहरण के लिए, कसरत को ट्रैक करने वाला ऐसा ऐप्लिकेशन जिसे उपयोगकर्ता जिम में चलाता है बार-बार आने वाले लोगों की संख्या में हो सकता है.
अगर कोई ऐप्लिकेशन बार-बार इस्तेमाल किए जाने वाले ऐप्लिकेशन की सूची में शामिल है, तो सिस्टम उस ऐप्लिकेशन पर सख्त पाबंदियां लागू करता है यह जॉब चलाने और अलार्म ट्रिगर करने की सुविधा देता है. ज़्यादा जानकारी के लिए, पावर मैनेजमेंट पाबंदियां तय की गई हैं.
काफ़ी कम बार
अगर किसी ऐप्लिकेशन का इस्तेमाल अक्सर नहीं किया जाता है, तो उसे अक्सर इस्तेमाल नहीं किया जाता कैटगरी में रखा जाता है. उदाहरण के लिए, होटल का ऐसा ऐप्लिकेशन जिसे उपयोगकर्ता सिर्फ़ उस होटल में ठहरने के दौरान चलाता है, वह शायद 'अन्य' कैटगरी में हो.
अगर कोई ऐप्लिकेशन 'अतिरिक्त' कैटगरी में आता है, तो सिस्टम उस पर जॉब चलाने और अलार्म ट्रिगर करने की सुविधा पर सख्त पाबंदियां लगाता है. यह सिस्टम, ऐप्लिकेशन के इंटरनेट से कनेक्ट होने की सुविधा को भी सीमित करता है. ज़्यादा जानकारी के लिए, पावर मैनेजमेंट से जुड़ी पाबंदियां लेख पढ़ें.
पाबंदी लगी है
Android 12 (एपीआई लेवल 31) में जोड़ी गई इस बकेट की प्राथमिकता सबसे कम है. साथ ही, इसमें सभी बकेट की सबसे ज़्यादा पाबंदियां हैं. सिस्टम, आपके ऐप्लिकेशन की जैसे कि उपयोगकर्ता इससे कितनी बार इंटरैक्ट करता है, ताकि यह तय किया जा सके कि उसे अपने ऐप्लिकेशन को प्रतिबंधित बकेट में रखें.
Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन पर, अगर आपका ऐप्लिकेशन छूट की ज़रूरी शर्तें पूरी नहीं करता है, तो सिस्टम आपके ऐप्लिकेशन को पाबंदी वाली बकेट में डाल देता है. ऐसा इन स्थितियों में होता है:
उपयोगकर्ता कुछ दिनों तक आपके ऐप्लिकेशन का इस्तेमाल न करे. Android 12 (एपीआई लेवल 31) और 12L (एपीआई लेवल 32) पर, यह अवधि 45 दिन होती है. Android 13 में दिनों की संख्या घटाकर आठ कर दी गई है.
आपका ऐप्लिकेशन 24 घंटे के दौरान, बहुत ज़्यादा ब्रॉडकास्ट या बाइंडिंग का इस्तेमाल करता है.
अगर सिस्टम आपके ऐप्लिकेशन को किसी प्रतिबंधित बकेट में रखता है, तो ये पाबंदियां लागू हैं:
- हर दिन एक बार, 10 मिनट के बैच वाले सेशन में जॉब चलाए जा सकते हैं. इस दौरान
इस सेशन में, सिस्टम आपके ऐप्लिकेशन की जॉब को अन्य ऐप्लिकेशन के साथ ग्रुप करता है नौकरियां.
- पाबंदी वाली जॉब अपने-आप नहीं चलती हैं. कम से कम एक होना चाहिए साथ ही, काम नहीं कर रहा हो या उसे मंज़ूरी मिलना बाकी हो. इसमें कोई भी काम शामिल हो सकता है दूसरी नौकरी.
- आपका ऐप्लिकेशन, सिस्टम की तुलना में कम तेज़ जॉब चला सकता है आपके ऐप्लिकेशन को कम पाबंदी वाले बकेट में रखता है.
- आपका ऐप्लिकेशन, हर दिन एक अलार्म चालू कर सकता है. यह अलार्म, सटीक अलार्म या असटीक अलार्म हो सकता है.
पाबंदी वाले बकेट से जुड़ी छूट
इस तरह के ऐप्लिकेशन को प्रतिबंधित बकेट में शामिल नहीं किया जा सकता और Android 12 और उसके बाद वाले वर्शन पर भी, इनऐक्टिविटी ट्रिगर को बायपास करने के लिए:
- कंपैनियन डिवाइस के ऐप्लिकेशन
- डेमो मोड में डिवाइस पर चल रहे ऐप्लिकेशन
- डिवाइस के मालिक ऐप्लिकेशन
- प्रोफ़ाइल के मालिक ऐप्लिकेशन
- हमेशा काम करने वाले ऐप्लिकेशन
- वीपीएन ऐप्लिकेशन
- ऐसे ऐप्लिकेशन जिनके पास
ROLE_DIALER
भूमिका है - ऐसे ऐप्लिकेशन जिन्हें उपयोगकर्ता ने साफ़ तौर पर, सिस्टम सेटिंग में "बिना किसी पाबंदी के" काम करने की अनुमति दी है
- ऐसे ऐप्लिकेशन जिनमें विजेट चालू हैं
- ऐसे ऐप्लिकेशन जिन्हें इनमें से कम से कम एक अनुमति दी गई हो:
प्राथमिकता वाली बकेट का आकलन करना
यह देखने के लिए कि आपका ऐप्लिकेशन किस बकेट के लिए असाइन किया गया है, इनमें से कोई एक काम करें:
getAppStandbyBucket()
पर कॉल करें.टर्मिनल विंडो में यहां दिया गया कमांड चलाएं:
adb shell am get-standby-bucket PACKAGE_NAME
जब भी आपके ऐप्लिकेशन को ऐप्लिकेशन स्टैंडबाय बकेट में रखा जाता है, तो सिस्टम आपके ऐप्लिकेशन को कम से कम इस्तेमाल करने की सुविधा देता है. यह सुविधा तब दी जाती है, जब ऐप्लिकेशन स्टैंडबाय बकेट की वैल्यू STANDBY_BUCKET_ACTIVE
(10) से ज़्यादा हो.
सबसे सही तरीके
अगर आपका ऐप्लिकेशन, Doze मोड और ऐप्लिकेशन के स्टैंडबाय मोड के लिए सबसे सही तरीकों का पालन कर रहा है, तो बाद में मिलने वाली पावर मैनेजमेंट सुविधाओं को इस्तेमाल करना मुश्किल नहीं होगा. हालांकि, ऐप्लिकेशन के कुछ ऐसे व्यवहारों की वजह से समस्याएं हो सकती हैं जो पहले ठीक से काम करते थे.
- अपने ऐप्लिकेशन को किसी खास कैटगरी में डालने के लिए, सिस्टम में बदलाव करने की कोशिश न करें. प्राथमिकता तय करने के सिस्टम का तरीका बदल सकता है और हर डिवाइस बकेटिंग ऐप्लिकेशन की मदद से, मैन्युफ़ैक्चरर खुद का बकेटिंग ऐप्लिकेशन लिख सकता है एल्गोरिदम. इसके बजाय, पक्का करें कि आपका ऐप्लिकेशन सही तरीके से काम करे, भले ही वह किसी भी बकेट में हो.
- अगर किसी ऐप्लिकेशन में लॉन्चर गतिविधि नहीं है, तो हो सकता है कि उसे कभी भी चालू बकेट में प्रमोट न किया जाए. इस तरह की गतिविधि के लिए, अपने ऐप्लिकेशन को फिर से डिज़ाइन करें.
अगर उपयोगकर्ता, ऐप्लिकेशन की सूचनाओं के साथ इंटरैक्ट नहीं कर सकते, तो वे ऐप्लिकेशन के प्रमोशन को ऐक्टिव बकेट में ट्रिगर नहीं कर पाएंगे. इस मामले में, ध्यान दें कि कुछ सूचनाओं को फिर से डिज़ाइन किया जा रहा है, ताकि उपयोगकर्ता इंटरैक्ट कर सकें. कुछ दिशा-निर्देशों के लिए, मटीरियल डिज़ाइन के सूचनाओं के डिज़ाइन पैटर्न देखें.
अगर ज़्यादा प्राथमिकता वाला Firebase Cloud Messaging (FCM) मैसेज मिलने पर, ऐप्लिकेशन कोई सूचना नहीं दिखाता है, तो उपयोगकर्ता ऐप्लिकेशन के साथ इंटरैक्ट नहीं कर सकता. इसलिए, उसे ऐक्टिव बकेट में प्रमोट करें. असल में, सिर्फ़ इस मकसद से ज़्यादा प्राथमिकता वाले FCM मैसेज के लिए, उपयोगकर्ता को सूचना देने के लिए इसका इस्तेमाल किया जाता है. इसलिए ऐसा नहीं होना चाहिए. 12L (एपीआई लेवल 32) और उससे कम पर, अगर तो आप किसी FCM मैसेज को गलत तरीके से 'हाई प्राथमिकता' के तौर पर मार्क करते हैं, जबकि वह ऐसा नहीं करता उपयोगकर्ता इंटरैक्शन को ट्रिगर करता है, तो इसकी वजह से आने वाले समय में मैसेज कमज़ोर हो सकते हैं.
अगर ऐप्लिकेशन को कई पैकेज में बांटा गया है, तो हो सकता है कि वे पैकेज अलग-अलग बकेट में हों और उनके ऐक्सेस लेवल अलग-अलग हों. अलग-अलग बकेट में असाइन किए गए पैकेज की मदद से, इन ऐप्लिकेशन की जांच करें. इससे यह पक्का किया जा सकेगा कि ऐप्लिकेशन सही तरीके से काम कर रहा है या नहीं.