डेटा ट्रांसफ़र करने के लिए वायरलेस रेडियो का इस्तेमाल करना, आपके ऐप्लिकेशन के सबसे लोकप्रिय तरीकों में से एक है बैटरी के तेज़ी से खर्च होने के अच्छे सोर्स. इससे बैटरी के तेज़ी से खर्च होने को कम करने के लिए है, तो यह ज़रूरी है कि आप अपनी कनेक्टिविटी को समझते हों मॉडल पहले से मौजूद रेडियो हार्डवेयर पर असर डालेगा.
इस सेक्शन में, वायरलेस रेडियो स्टेट मशीन के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि आपके ऐप्लिकेशन का कनेक्टिविटी मॉडल, इससे कैसे इंटरैक्ट करता है. इसके बाद, यह कई तकनीकें उपलब्ध कराता है. इनका इस्तेमाल करने पर, आपके ऐप्लिकेशन के डेटा खर्च का असर बैटरी पर कम हो जाएगा.
रेडियो स्टेट मशीन
उपयोगकर्ता के डिवाइस पर मौजूद वायरलेस रेडियो में, बैटरी बचाने वाली सुविधाएं पहले से मौजूद होती हैं. इनकी मदद से, डिवाइस की बैटरी कम खर्च होती है. पूरी तरह से चालू होने पर, वायरलेस रेडियो काफ़ी बिजली खर्च करता है. हालांकि, बंद होने या स्टैंडबाय मोड में होने पर, रेडियो बहुत कम बिजली खर्च करता है.
एक अहम बात यह याद रखें कि रेडियो, स्टैंडबाय मोड से पूरी तरह चालू होने में कुछ समय लेता है. रेडियो को "चालू करने" में कुछ समय लगता है. इसलिए, बैटरी ज़्यादा ऊर्जा वाली स्थिति से बदलकर, कम ऊर्जा का इस्तेमाल होने पर, ऊर्जा की खपत कम होती है. इससे बिजली की बचत होती है. "पावर अप" से जुड़ी इंतज़ार के समय को कम करने की कोशिश की जा रही है ट्रैक करने का एक बेहतर तरीका है.
किसी सामान्य 3G नेटवर्क रेडियो के लिए स्टेट मशीन में, ऊर्जा की तीन स्थितियां होती हैं:
- पूरी पावर: इसका इस्तेमाल तब किया जाता है, जब कोई कनेक्शन चालू होता है और डिवाइस को ये काम करने की अनुमति मिलती है सबसे ज़्यादा संभावित दर पर डेटा ट्रांसफ़र करते हैं.
- कम पावर: एक इंटरमीडिएट स्थिति, जो बैटरी पावर की खपत को इतनी कम करती है करीब 50% की बढ़ोतरी हुई.
- स्टैंडबाय: बैटरी की सबसे कम खपत वाली ऐसी स्थिति जिसके दौरान कोई नेटवर्क मौजूद नहीं होता कनेक्शन चालू है.
जब बैटरी कम और स्टैंडबाय मोड में रहती है, तब बैटरी काफ़ी कम खर्च होती है. नेटवर्क अनुरोधों में समय लगने वाला बहुत ज़्यादा समय लगना चाहिए. कम बैटरी वाली स्थिति से पूरी बैटरी वाली स्थिति में वापस आने में करीब 1.5 सेकंड लगते हैं. वहीं, स्टैंडबाय मोड से पूरी बैटरी वाली स्थिति में आने में दो सेकंड से ज़्यादा लग सकते हैं.
इंतज़ार का समय कम करने के लिए, स्टेट मशीन, कम ऊर्जा वाले स्टेट में ट्रांज़िशन को टालने के लिए देरी का इस्तेमाल करती है. पहली इमेज में, सामान्य 3G रेडियो के लिए AT&T की तय की गई समयावधि का इस्तेमाल किया गया है.
पहली इमेज. सामान्य 3G वायरलेस रेडियो स्टेट मशीन.
हर डिवाइस पर रेडियो स्टेट मशीन, खास तौर पर ट्रांज़िशन में लगने वाला समय ("टेल टाइम") और स्टार्टअप में लगने वाला समय, इस्तेमाल की जा रही वायरलेस रेडियो टेक्नोलॉजी (3G, LTE, 5G वगैरह) के हिसाब से अलग-अलग होगा. साथ ही, इसे मोबाइल और इंटरनेट सेवा देने वाली कंपनी के नेटवर्क के हिसाब से तय और कॉन्फ़िगर किया जाता है.
यह पेज किसी सामान्य 3G वायरलेस के लिए प्रतिनिधि स्टेट मशीन के बारे में बताता है AT&T से मिले डेटा के आधार पर रेडियो स्टेशन. हालांकि, सामान्य सिद्धांत और नतीजे देने के लिए सबसे सही तरीके सभी वायरलेस रेडियो इंप्लिमेंटेशन पर लागू होते हैं.
यह तरीका खास तौर पर मोबाइल वेब ब्राउज़िंग के लिए असरदार है, क्योंकि यह उपयोगकर्ताओं के वेब ब्राउज़ करने के दौरान, इंतज़ार का समय बेवजह नहीं होने देता. टेल-टाइम कम होने से यह भी पक्का होता है कि ब्राउज़िंग सेशन खत्म होने के बाद, रेडियो कम ऊर्जा वाले मोड में चलाया जा सकता है.
दुर्भाग्य से, इस तरीके की वजह से मॉडर्न स्मार्टफ़ोन पर गलत ऐप्लिकेशन बन सकते हैं ऑपरेटिंग सिस्टम, जैसे कि Android, जिसमें ऐप्लिकेशन फ़ोरग्राउंड में (जहां) इंतज़ार का समय ज़रूरी है) और बैकग्राउंड में (जहां बैटरी लाइफ़ होनी चाहिए) प्राथमिकता दी जाती है).
ऐप्लिकेशन, रेडियो स्टेट मशीन पर कैसे असर डालते हैं
हर बार नया नेटवर्क कनेक्शन बनाने पर, रेडियो पूरी पावर पर चलने लगता है. सामान्य 3G रेडियो स्टेट मशीन के मामले में इससे पहले, ट्रांसफ़र करने के दौरान यह पूरी तरह से काम करता रहेगा—साथ ही कम ऊर्जा का इस्तेमाल करने पर, टेल टाइम और 5 सेकंड आगे बढ़ जाएंगे. इसके बाद, कम ऊर्जा का इस्तेमाल करने पर 12 सेकंड लगेंगे राज्य. इसलिए किसी सामान्य 3G डिवाइस के लिए, हर डेटा ट्रांसफ़र सेशन में रेडियो स्टेशन का इस्तेमाल करें.
इसका मतलब है कि अगर कोई ऐप्लिकेशन एक मिनट में तीन बार एक सेकंड का डेटा ट्रांसफ़र करता है, तो वह वायरलेस रेडियो को हमेशा चालू रखेगा. साथ ही, स्टैंडबाय मोड में जाने पर भी उसे फिर से हाई पावर पर ले जाएगा.
दूसरी इमेज. हर मिनट में तीन बार होने वाले एक सेकंड के ट्रांसफ़र के लिए, वायरलेस रेडियो की ऊर्जा का इस्तेमाल. इमेज में "पावर अप" शामिल नहीं है चलने के बीच इंतज़ार का समय.
तुलना करने के लिए, अगर वही ऐप्लिकेशन अपने डेटा ट्रांसफ़र को बंडल करके, हर मिनट में तीन सेकंड का एक ट्रांसफ़र करता है, तो रेडियो हर मिनट में सिर्फ़ 20 सेकंड के लिए हाई-पावर मोड में रहेगा. इससे रेडियो को हर मिनट के 40 सेकंड के लिए स्टैंडबाय मोड पर रखा जा सकता है. इससे बैटरी खर्च में काफ़ी कमी आएगी.
तीसरी इमेज. तीन सेकंड के ट्रांसफ़र के लिए रिलेटिव रेडियो पावर का इस्तेमाल
हर मिनट में एक बार दौड़ना.
ऑप्टिमाइज़ेशन की तकनीकें
अब आपको पता है कि नेटवर्क ऐक्सेस करने से बैटरी लाइफ़ पर क्या असर पड़ता है. अब हम उन कुछ चीज़ों के बारे में बात करते हैं जिनसे बैटरी की खपत कम करने के साथ-साथ, उपयोगकर्ता को बेहतर अनुभव भी मिलता है.
बंडल डेटा ट्रांसफ़र
पिछले सेक्शन में बताया गया था कि बैटरी की लाइफ़ को बेहतर बनाने के सबसे बेहतर तरीकों में से एक है, डेटा ट्रांसफ़र को बंडल करना. इससे, कम समय में ज़्यादा डेटा ट्रांसफ़र किया जा सकता है.
हालांकि, अगर आपके ऐप्लिकेशन को उपयोगकर्ता की कार्रवाई के जवाब में तुरंत डेटा पाने या भेजने की ज़रूरत है, तो ऐसा हमेशा नहीं किया जा सकता. इसे कम किया जा सकता है डेटा का अनुमान लगाने और डेटा को प्रीफ़ेच करने के बारे में जानकारी शामिल होती है. अन्य स्थितियां, जैसे कि ऐप्लिकेशन की मदद से शुरू किया गया, सर्वर और अन्य गैर-ज़रूरी डेटा को लॉग या आंकड़े भेजना ट्रांसफ़र करता है, बैच बनाने और बंडल करने में काफ़ी मदद करता है. ऑप्टिमाइज़ करना देखें ऐप्लिकेशन की मदद से शुरू किया गया Tasks बैकग्राउंड नेटवर्क ट्रांसफ़र शेड्यूल करने से जुड़ी सलाह.
डेटा प्रीफ़ेच करें
डेटा को पहले से फ़ेच करने का तरीका, डेटा ट्रांसफ़र के उन अलग-अलग सेशन की संख्या को कम करने का एक और असरदार तरीका है जो आपका ऐप्लिकेशन चलाता है. प्रीफ़ेच करने की सुविधा की मदद से, जब उपयोगकर्ता आपके ऐप्लिकेशन में कोई कार्रवाई करता है, तो ऐप्लिकेशन यह अनुमान लगाता है कि उपयोगकर्ता की अगली कार्रवाइयों के लिए किस डेटा की ज़रूरत पड़ सकती है. इसके बाद, वह डेटा को एक ही कनेक्शन पर पूरी क्षमता के साथ, एक ही बार में फ़ेच करता है.
ट्रांसफ़र को फ़्रंट-लोड करने से, डेटा डाउनलोड करने के लिए रेडियो को चालू करने की ज़रूरत कम हो जाती है. इससे, न सिर्फ़ बैटरी लाइफ़ बचती है, बल्कि रिस्पॉन्स में लगने वाला समय भी कम होता है. साथ ही, ज़रूरी बैंडविड्थ और वीडियो डाउनलोड होने में लगने वाला समय भी कम हो जाता है.
डेटा को पहले से फ़ेच करने से, उपयोगकर्ता अनुभव भी बेहतर होता है. ऐसा इसलिए होता है, क्योंकि इससे ऐप्लिकेशन में डेटा डाउनलोड होने में लगने वाला समय कम हो जाता है. इस समय के दौरान, उपयोगकर्ता कोई कार्रवाई नहीं कर पाता या डेटा नहीं देख पाता.
यहां एक व्यावहारिक उदाहरण दिया गया है.
खबरें पढ़ने वाला कोई व्यक्ति
कई समाचार ऐप्लिकेशन, बैंडविड्थ कम करने के लिए, सिर्फ़ कैटगरी चुनने के बाद हेडलाइन डाउनलोड करते हैं. साथ ही, उपयोगकर्ता जब लेख पढ़ना चाहता है, तब ही पूरा लेख डाउनलोड करते हैं. इसके अलावा, जब स्क्रीन पर थंबनेल दिखते हैं, तब ही उन्हें डाउनलोड करते हैं.
इस तरीके का इस्तेमाल करते हुए, रेडियो ज़्यादातर लोगों के लिए चालू रहता है उपयोगकर्ताओं का समाचार पढ़ने के सत्र के दौरान, जब वे हेडलाइन स्क्रोल करते हैं, कैटगरी बदलते हैं, और लेख पढ़ना. इतना ही नहीं, एनर्जी स्टेटस के बीच लगातार स्विच करने से, कैटगरी स्विच करने या लेख पढ़ने में काफ़ी देरी होती है.
एक बेहतर तरीका यह है कि ऐप्लिकेशन शुरू होने पर, ज़रूरत के मुताबिक डेटा को पहले से लोड कर लिया जाए. इसके लिए, खबरों की हेडलाइन और थंबनेल के पहले सेट से शुरुआत करें. इससे ऐप्लिकेशन शुरू होने में कम समय लगेगा. इसके बाद, बाकी हेडलाइन और थंबनेल के साथ-साथ, कम से कम मुख्य हेडलाइन की सूची में मौजूद हर लेख का टेक्स्ट भी लोड करें.
दूसरा विकल्प यह है कि हर हेडलाइन, थंबनेल, लेख के टेक्स्ट, और शायद पूरे लेखों की तस्वीरें भी—आम तौर पर, बैकग्राउंड में पहले से तय शेड्यूल. यह तरीका बहुत ज़्यादा बैंडविड्थ खर्च करने और ऐसी सामग्री डाउनलोड करने की बैटरी लाइफ़ जो कभी उपयोग न हो, इसलिए इसे लागू किया जाना चाहिए सावधानी से इस्तेमाल करना चाहिए.
ज़्यादा जानकारी
डेटा को पहले से लोड करने के कई फ़ायदे हैं. हालांकि, बहुत ज़्यादा इस्तेमाल करने पर, बैटरी खर्च होने और बैंडविड्थ के इस्तेमाल में बढ़ोतरी होने का खतरा भी बढ़ जाता है. साथ ही, डाउनलोड कोटा भी खत्म हो सकता है. ऐसा इसलिए होता है, क्योंकि पहले से लोड किए गए डेटा का इस्तेमाल नहीं किया जाता. यह भी पक्का करना ज़रूरी है कि ऐप्लिकेशन के शुरू होने में देरी न हो. ऐसा तब होता है, जब ऐप्लिकेशन प्रीफ़ेच की प्रोसेस पूरी होने का इंतज़ार करता है. व्यावहारिक तौर पर इसका मतलब है कि डेटा को धीरे-धीरे प्रोसेस किया जा रहा हो या प्राथमिकता के आधार पर लगातार ट्रांसफ़र किया जा रहा हो ताकि ऐप्लिकेशन शुरू होने के लिए ज़रूरी डेटा डाउनलोड और प्रोसेस हो जाए चुनें.
आपने डेटा को कितनी तेज़ी से प्रीफ़ेच किया है, यह डेटा के साइज़ पर निर्भर करता है डाउनलोड किए जाने की संभावना के बारे में बताया गया है. एक मौज़ूद गाइड के तौर पर, स्टेट मशीन के बारे में बताया गया है. यह ऐसा डेटा होता है जिसे इस्तेमाल किए जाने की संभावना 50% होती है मौजूदा उपयोगकर्ता सेशन में, आम तौर पर करीब 6 सेकंड के लिए प्रीफ़ेच किया जा सकता है (करीब 1-2 मेगाबाइट) और इस्तेमाल न की गई किसी फ़ाइल को डाउनलोड करने में आने वाली संभावित लागत से पहले डेटा, उस डेटा को डाउनलोड न करने से होने वाली संभावित बचत से मेल खाता है.
आम तौर पर, डेटा को प्रीफ़ेच करना बेहतर होता है. ऐसा इसलिए, ताकि आप सिर्फ़ हर दो से पांच मिनट में एक और डाउनलोड शुरू करना होगा और 5 मेगाबाइट.
इस सिद्धांत के मुताबिक, वीडियो फ़ाइलों जैसी बड़ी फ़ाइलों को, समय-समय पर (हर दो से पांच मिनट में) छोटे-छोटे हिस्सों में डाउनलोड किया जाना चाहिए. इससे, अगले कुछ मिनटों में देखे जाने वाले वीडियो के डेटा को पहले से लोड किया जा सकता है.
इसका एक तरीका यह है कि डाउनलोड पूरा होने का समय सिर्फ़ वाई-फ़ाई से कनेक्ट होने पर शेड्यूल किया जाए. साथ ही, हो सकता है कि यह समय सिर्फ़ डिवाइस चार्ज होने पर ही शेड्यूल किया जाए. कॉन्टेंट बनाने WorkManager एपीआई इस्तेमाल के इस उदाहरण के साथ काम करता है, जिससे आपको बैकग्राउंड में होने वाले काम को सीमित करने की सुविधा मिलती है जब तक कि डिवाइस डेवलपर की तय की गई शर्तों को पूरा न कर ले, जैसे कि चार्जिंग और वाई-फ़ाई से कनेक्ट किया जा रहा है.
अनुरोध करने से पहले, कनेक्टिविटी की जांच करना
मोबाइल डिवाइस पर, मोबाइल सिग्नल खोजना सबसे ज़्यादा बैटरी खर्च करने वाला काम है. उपयोगकर्ता से मिले अनुरोधों के लिए सबसे सही तरीका यह है कि पहले ConnectivityManager
का इस्तेमाल करके, कनेक्शन की जांच की जाए. इस बारे में ज़्यादा जानने के लिए, कनेक्शन की स्थिति और कनेक्शन मेज़र करने की सुविधा को मॉनिटर करना लेख पढ़ें.
अगर कोई नेटवर्क नहीं है, तो ऐप्लिकेशन मोबाइल रेडियो को खोजने के लिए मजबूर किए बिना बैटरी बचा सकता है. इसके बाद, अनुरोध को शेड्यूल करके उस बैच में भेजा जा सकता है
कनेक्शन बनाने पर अनुरोध करता है.
पूल कनेक्शन
बैच बनाने और प्रीफ़ेच करने के अलावा, यह एक और रणनीति है जो मदद कर सकती है आपके ऐप्लिकेशन के नेटवर्क कनेक्शन को पूल करने के लिए.
आम तौर पर, मौजूदा इंटरनेट कनेक्शन का फिर से इस्तेमाल करना ज़्यादा कारगर साबित होता है नए प्रोजेक्ट बनाने के लिए भी किया जा सकता है. कनेक्शन का दोबारा इस्तेमाल करने पर, नेटवर्क ये काम भी कर पाता है कंजेशन और नेटवर्क डेटा से जुड़ी समस्याओं पर ज़्यादा आसानी से प्रतिक्रिया देने के लिए.
HttpURLConnection
और ज़्यादातर एचटीटीपी क्लाइंट, जैसे कि OkHttp, डिफ़ॉल्ट रूप से कनेक्शन-पूलिंग की सुविधा चालू करते हैं. साथ ही, एक ही कनेक्शन का इस्तेमाल कई अनुरोधों के लिए करते हैं.
रीकैप और आगे की योजनाएं
इस सेक्शन में आपने वायरलेस रेडियो और उससे जुड़ी कुछ रणनीतियों के बारे में बहुत कुछ सीखा को तेज़ी से और रिस्पॉन्सिव उपयोगकर्ता अनुभव देने के लिए बड़े पैमाने पर आवेदन कर सकते हैं. साथ ही, बैटरी को तेज़ी से खर्च होने से बचाने के लिए किया जा सकता है.
अगले सेक्शन में, हम तीन अलग-अलग तरह की ज़्यादातर ऐप्लिकेशन के साथ आम तौर पर होने वाले नेटवर्क इंटरैक्शन. आप हर एक के लिए ड्राइवर के बारे में जानेंगे साथ ही, इन संसाधनों को मैनेज करने के लिए आधुनिक तकनीकों और एपीआई का इस्तेमाल करें इंटरैक्शन बेहतर ढंग से करते हैं.