मेरे पास एंड्रॉइड विगेट्स और विशेष रूप से एंड्रॉइड सेवाओं के बारे में एक सवाल है। यहां मैं यह करना चाहता हूं: फोन पर उपयोगकर्ता को अपना होमस्क्रीन में अपना विजेट जोड़ना चाहिए। विजेट नेटवर्क से अपना डेटा प्राप्त करता है। इस बारे में कुछ ट्यूटोरियल पढ़ने के बाद, मुझे पता चला कि नेटवर्क (टीसीपी सॉकेट) से डेटा प्राप्त करने वाली सेवा बनाने के लिए सबसे अच्छा तरीका होगा और फिर विजेट को लगातार अद्यतन करेगा। यह ScheduledExecutorService के साथ किया जाता है जो एक निश्चित अंतराल में एक रननेबल निष्पादित करता है। रननेबल एक सर्वर से कनेक्ट होगा, डेटा प्राप्त करें और विजेट को अपडेट करना चाहिए)।एंड्रॉइड - नेटवर्क से डेटा के साथ सेवा पर विजेट अद्यतन करें। सर्वश्रेष्ठ दृष्टिकोण?
मेरी समस्या अब है, कि स्क्रीन बंद होने पर विजेट को अद्यतन करने की आवश्यकता नहीं है और इसलिए बैटरी नाली के कारण सेवा नहीं चलनी चाहिए। मेरा सवाल है: इसे सबसे अच्छा तरीका कैसे करें?
मैं 2 दृष्टिकोण जो कम या ज्यादा मैं क्या चाहते हो जाएगा पाया:
विजेट का पहला उदाहरण होमस्क्रीन पर जोड़ा जाता है, यह एक प्रसारण रिसीवर कि ACTION_SCREEN_ON प्राप्त करता है और रजिस्टर करेंगे एंड्रॉइड ओएस से ACTION_SCREEN_OFF इरादा कार्रवाई। यदि ACTION_SCREEN_ON निकाल दिया गया है, तो यह अद्यतनकर्ता सेवा शुरू करेगा, अन्यथा यह इसे रोक देगा। लेकिन अगर मैं प्रसारण रिसीवर जीवनकाल के कारण एक अच्छा दृष्टिकोण है तो मैं वास्तव में अनिश्चित हूं।
अद्यतनकर्ता सेवा के रननेबल में, जिसे शेड्यूल किए गए एक्सेप्टर सेवा द्वारा समय-समय पर निष्पादित किया जाता है और वास्तव में नेटवर्क सामग्री करता है, मैं स्क्रीन चालू होने पर PowerManager.isScreenOn() के माध्यम से जांचता हूं। यदि हां, तो मैं नेटवर्क कोड निष्पादित करता हूं, अन्यथा नहीं। लेकिन डिवाइस कब स्टैंडबाय में है? क्या यह कोड तब निष्पादित किया गया है? यहां बैटरी नाली के बारे में क्या?
क्या मैं शायद जो करना चाहता हूं उसके लिए "सर्वोत्तम अभ्यास" दृष्टिकोण हो सकता है? मैंने अलार्ममेनगर के बारे में बहुत कुछ पढ़ा है और यह एक बहुत शक्तिशाली उपकरण है। क्या आप इस तरीके से कार्यों को शेड्यूल कर सकते हैं, कि डिस्प्ले चालू होने पर उन्हें केवल तभी निष्पादित किया जाता है?
आपकी मदद के लिए धन्यवाद।
बेस्ट सादर NiThDi
क्या आपने [Google क्लाउड मैसेजिंग] (http://developer.android.com/google/gcm/index.html) के बारे में कोई विचार दिया था? इस तरह आपको डेटा के लिए मतदान करने की आवश्यकता नहीं होगी (भले ही डिवाइस केवल जागने के लिए ही हो) और जब आप बदल जाए तो आपको केवल नया डेटा मिलेगा। इसके अलावा जब आप किसी भी प्रारंभिक देरी के बिना उपयोगकर्ता को अपना डिवाइस जगाते हैं तो इसका नवीनतम टुकड़ा प्रदर्शित करने का लाभ प्राप्त होगा। – Audrius
हैलो, तेज़ उत्तर के लिए धन्यवाद। मुझे नहीं लगता कि Google क्लाउड मैसेजिंग जो भी मैं चाहता हूं वह कर सकता हूं। बिंदु (स्पष्ट होने के लिए) है, ऊपर उल्लिखित सर्वर सभी उपयोगकर्ताओं के लिए एक सर्वर नहीं है। यह एक सर्वर अनुप्रयोग है जो अपने कंप्यूटर में चल रहा है। वास्तव में, यह ऐप एक रिमोट कंट्रोल है जो सर्वर से सर्वर पर टीसीपी/आईपी पर लैन में कनेक्ट होता है। – NiThDi