android - सॉकेट कनेक्शन और मतदान। बैटरी जीवन के मामले में कौन सा बेहतर समाधान है?




sockets tcp (2)

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

उस ने कहा, विस्तारित अवधि के लिए एक टीसीपी कनेक्शन खुला रखना मोबाइल डिवाइस के लिए एक अच्छा विकल्प नहीं हो सकता है, क्योंकि टीसीपी कनेक्शन सोने के कंप्यूटरों के साथ अच्छी तरह से बातचीत नहीं करते हैं। समस्या परिदृश्य यह होगा: आपका एंड्रॉइड उपयोगकर्ता अपने ऐप को चलाने के दौरान अपने एंड्रॉइड डिवाइस को सोने के लिए रखता है, और फिर दूरस्थ उपयोगकर्ता का प्रोग्राम (या जो भी टीसीपी कनेक्शन के दूसरे छोर पर है) टीसीपी स्ट्रीम पर कुछ डेटा भेजता है। रिमोट यूजर का प्रोग्राम एंड्रॉइड डिवाइस से कभी भी एसीके वापस नहीं लेता है, क्योंकि निश्चित रूप से एंड्रॉइड डिवाइस सो रहा है, इसलिए रिमोट डिवाइस का टीसीपी स्टैक मानता है कि भेजे गए टीसीपी पैकेट खो गए होंगे, और यह इसकी टाइमआउट अवधि बढ़ाकर जवाब देता है, अपने टीसीपी विंडो आकार (उर्फ संख्या-के-टीसीपी-पैकेट-स्वीकृत-इन-फ्लाइट-एक-बार में) को कम करना, और टीसीपी पैकेट को फिर से भेजना। लेकिन एंड्रॉइड डिवाइस अभी भी सो रहा है, और इस तरह एक ही चीज फिर से होती है। अपशॉट यह है कि कुछ मिनट बाद, टीसीपी कनेक्शन का रिमोट एंड उस बिंदु तक धीमा हो गया है, भले ही एंड्रॉइड डिवाइस जागने के बावजूद, टीसीपी कनेक्शन संभवतः उपयोग करने योग्य हो जाएगा - जिस बिंदु पर कार्यक्रम को दबाने वाले टीसीपी कनेक्शन को बंद करने और किसी भी तरह से एक नया शुरू करने की आवश्यकता होगी, तो इसे खोलने की कोशिश क्यों परेशान करें?

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

एक संभावित चेतावनी होगी यदि एंड्रॉइड में एक सुविधा है जहां एक टीसीपी कनेक्शन खोलने से वाईफाई या सेल-नेटवर्क हार्डवेयर को ऐसी स्थिति में संचालित किया जाता है जहां इसे अन्यथा सोया जा सकता है - यदि ऐसा है, तो एंड्रॉइड डिवाइस एंटीना को सशक्त करने के लिए बैटरी लागत का भुगतान करेगा, जिसे अन्यथा भुगतान नहीं करना पड़ेगा। मुझे इस तरह के किसी भी एंड्रॉइड तर्क से अवगत नहीं है, लेकिन मैंने केवल एंड्रॉइड का उपयोग किया है ताकि यह मेरे हिस्से पर अज्ञान हो। कम से कम परीक्षण के लायक हो सकता है।

(*) ठीक है, तकनीकी रूप से टीसीपी एक टीसीपी कनेक्शन खुला होने पर हर बार "रखरखाव" पैकेट भेजता है, और यह कुछ सीपीयू चक्र और एंटीना शक्ति का उपयोग करता है ... लेकिन एंड्रॉइड पर रखरखाव पैकेट भेजने के लिए डिफ़ॉल्ट अंतराल दो घंटे है , इसलिए मुझे संदेह है कि इसके लिए उपयोग की जाने वाली शक्ति ध्यान देने योग्य होगी।

तो ... मैं एंड्रॉइड के लिए एक आवेदन कर रहा हूँ। एप्लिकेशन को रीयलटाइम चैट डेटा भेजने और प्राप्त करने की आवश्यकता है (सॉकेट होने की आवश्यकता है) लेकिन इसे कमांड भेजने की भी आवश्यकता है (जो क्लाइंट के रूप में नहीं जानता है जब यह कुछ भेज रहा है)।

मुझे पता होना चाहिए कि उपयोगकर्ता की बैटरी को बचाने के मामले में बेहतर समाधान क्या है।

ए) प्रत्येक बार कमांड भेजा जाने पर कनेक्शन खोलना और बंद करना, अगर चैट टैब खोला जाता है तो कनेक्शन को स्थिर रखें।

बी) कनेक्शन को हर समय स्थिर रखें।

मैंने इंटरनेट के चारों ओर एक नज़र डाली है लेकिन मिश्रित उत्तरों प्राप्त कर चुके हैं, कुछ कहते हैं कि एक सतत कनेक्शन रखना बैटरी जीवन के लिए बुरा है और अन्य कहते हैं कि यह नहीं है (उदाहरण: "क्या आप पूछ रहे हैं कि एक टीसीपी कनेक्शन खोलने से बैटरी निकल जाएगी जीवन? शायद मैं यहां से बाहर हूं लेकिन, एक कनेक्शन खोलने से बैटरी जीवन बर्बाद नहीं होना चाहिए ... अगर आपको लगता है कि यह जानना अच्छा लगेगा कि आपको यह जानकारी कहां मिली है। यह मेरे लिए बहुत अजीब लगता है। " )

या यदि कोई और समाधान है जो बेहतर होगा। मुझे नहीं लगता कि Google की सी 2 डीएम इस स्थिति में भी बहुत उपयोगी होगी।

असल में, बैटरी को और क्या नाली जाती है: लगातार कनेक्शन होने पर, या कनेक्शन खोलने और बंद होने तक चैट टैब खुला रहता है?

धन्यवाद!


बैटरी डीसीएच / एफएसीएच / आईडीएलई से 3 जी पर रेडियो स्टेट संक्रमण से बहुत अधिक संबंधित है। यदि आप एक ऐसा ऐप रखना चाहते हैं जो ऊर्जा कुशल है, तो आपको सीमित समय अंतराल पर जितना संभव हो उतना डेटा भेजना चाहिए जो निरंतर कनेक्शन के अप्रासंगिक है या नहीं ...





battery