सक्रिय करने की अत्यधिक संख्या

वेकअप, AlarmManager एपीआई की मदद से डेवलपर, डिवाइस को किसी तय समय पर चालू करने के लिए अलार्म सेट कर सकते हैं. आपका ऐप्लिकेशन set() में से किसी एक तरीके को कॉल करके, जागने का अलार्म सेट करता है AlarmManager को इनके साथ या तो RTC_WAKEUP या ELAPSED_REALTIME_WAKEUP फ़्लैग करें. जब डिवाइस चालू होने का अलार्म ट्रिगर होता है, तो डिवाइस कम पावर वाले मोड से बाहर आ जाता है और अलार्म की onReceive() या onAlarm() तरीका. अगर अलार्म ज़्यादा बार ट्रिगर होते हैं, तो वे डिवाइस की बैटरी तेज़ी से खर्च कर सकते हैं बैटरी.

ऐप्लिकेशन की क्वालिटी को बेहतर बनाने में आपकी मदद करने के लिए, Android बहुत ज़्यादा चालू करने वाले अलार्म के साथ-साथ यह जानकारी 'Android की ज़रूरी जानकारी' में दी गई है. इसके लिए डेटा इकट्ठा करने के तरीके के बारे में जानकारी, Play Console देखें दस्तावेज़.

अगर आपका ऐप्लिकेशन, डिवाइस को बार-बार चालू कर रहा है, तो इन दिशा-निर्देशों का इस्तेमाल इस पेज पर जाएं.

समस्या ठीक करें

AlarmManager यह था Android प्लैटफ़ॉर्म के शुरुआती वर्शन में पेश की गई थी, लेकिन समय के साथ, ऐसे मामले जिनकी पहले ज़रूरत थी AlarmManager अब हैं नई सुविधाओं से बेहतर नतीजे मिल सकते हैं, जैसे कि WorkManager. इस सेक्शन में, जगाने के लिए अलार्म कम करने से जुड़ी सलाह दी गई है, लेकिन लंबी अवधि के लिए, सबसे बढ़िया ऐप्लिकेशन की सलाह के साथ, तरीके सेक्शन में बताया गया है.

अपने ऐप्लिकेशन में उन जगहों की पहचान करें जहां आपने जागने के लिए सेट किए गए अलार्म को शेड्यूल किया है और कम किया है उन अलार्म के ट्रिगर होने की फ़्रीक्वेंसी तय की जाती है. इससे जुड़े कुछ सुझाव यहां दिए गए हैं:

  • अलग-अलग set() तरीके AlarmManager ने इनमें से कोई एक शामिल करें RTC_WAKEUP या ELAPSED_REALTIME_WAKEUP फ़्लैग करें.

  • हमारा सुझाव है कि आप अपने अलार्म के टैग में पैकेज, क्लास या तरीके का नाम शामिल करें नाम दिया जाएगा, ताकि आप अपने स्रोत में उस स्थान की आसानी से पहचान कर सकें जहां अलार्म सेट कर दिया गया था. यहां कुछ अतिरिक्त सुझाव दिए गए हैं:

    • नाम में व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) शामिल न करें, जैसे कि एक ईमेल पता. ऐसा न करने पर, डिवाइस अलार्म के बजाय _UNKNOWN को लॉग करेगा नाम.
    • क्लास या मेथड का नाम प्रोग्राम के हिसाब से न पाएं. उदाहरण के लिए, कॉल करके getName(), क्योंकि ProGuard को उलझाने की जानकारी मिल सकती है. इसके बजाय, हार्ड कोड की गई स्ट्रिंग का इस्तेमाल करें.
    • अलार्म टैग में काउंटर या यूनीक आइडेंटिफ़ायर न जोड़ें. सिस्टम यह काम नहीं करेगा इस तरह से सेट किए गए अलार्म को इकट्ठा कर पाएगा, क्योंकि उन सभी में यूनीक आइडेंटिफ़ायर मौजूद हैं.

समस्या को ठीक करने के बाद, देख लें कि आपके जागने के अलार्म इस तरह काम कर रहे हों इसे चलाने की उम्मीद, नीचे दिए गए ADB को चलाने से की जाती है आदेश:

adb shell dumpsys alarm

यह निर्देश अलार्म सिस्टम सेवा की स्थिति के बारे में जानकारी देता है डिवाइस पर. ज़्यादा जानकारी के लिए, यह देखें dumpsys को निलंबित कर दिया जाएगा.

सबसे सही तरीके

जगाने वाले अलार्म का इस्तेमाल सिर्फ़ तब करें, जब आपके ऐप्लिकेशन को उपयोगकर्ता के इस्तेमाल करने की ज़रूरत हो (जैसे, किसी सूचना को पोस्ट करना या उपयोगकर्ता को चेतावनी देना). इनकी सूची के लिए अलार्मManager के इस्तेमाल के सबसे सही तरीके, शेड्यूलिंग देखें अलार्म.

इस्तेमाल न करें AlarmManager से बैकग्राउंड वाले टास्क शेड्यूल किए जा सकते हैं. खास तौर पर, बार-बार होने वाले टास्क या नेटवर्क के बैकग्राउंड वाले टास्क. इस्तेमाल की जाने वाली चीज़ें वर्कमैनेजर बैकग्राउंड में होने वाले टास्क शेड्यूल करने के लिए, क्योंकि इससे ये फ़ायदे मिलते हैं:

  • बैच बनाना - काम को एक साथ जोड़ा जाता है ताकि बैटरी की खपत कम हो
  • परसिस्टेंस - डिवाइस को फिर से चालू करने पर, शेड्यूल किए गए WorkManager जॉब फिर से चालू होने के बाद चलाना
  • शर्तें - जॉब कुछ शर्तों के हिसाब से चल सकती हैं, जैसे कि डिवाइस है या नहीं चार्ज हो रहा है या वाई-फ़ाई उपलब्ध है

ज़्यादा जानकारी के लिए, बैकग्राउंड प्रोसेसिंग के बारे में गाइड देखें.

AlarmManager का इस्तेमाल न करें ऐसे समय की कार्रवाइयां शेड्यूल करने के लिए जो सिर्फ़ ऐप्लिकेशन के चलने के दौरान ही मान्य होती हैं ( दूसरे शब्दों में, जब उपयोगकर्ता साइट से बाहर निकलते हैं, तो समय की कार्रवाई रद्द कर दी जानी चाहिए ऐप्लिकेशन). ऐसी स्थितियों में, Handler क्लास, क्योंकि यह और आसानी से समझ में आ जाता है.