2010-06-25 8 views
5

मेरे पास 4x4 विजेट है और मैं हर 15-20 सेकंड में इसका थोड़ा टुकड़ा अपडेट करना चाहता हूं। स्पष्ट रूप से मैं नहीं चाहता कि यह फोन स्टैंडबाय होने पर अपडेट किया जाए। विजेट को मेरे टाइमर के अलावा कुछ सिस्टम इवेंट्स का जवाब देने की भी आवश्यकता है। तो, सबसे अच्छा विकल्प कौन सा है?प्रत्येक 20-30 सेकंड में एंड्रॉइड विजेट अपडेट करने का सबसे अच्छा तरीका: हैंडलर, सेवा या अलार्म?

  • एक AlarmManager: अच्छा, लेकिन शायद गहन CPU अगर यह हर 20 सेकंड
  • एक हैंडलर चलाने के लिए की जरूरत है: प्रकाश लेकिन मुझे नहीं पता है कि यह कैसे को रोकने के लिए जब फोन
  • एक सेवा सोता है: भी यहाँ मैं यह समझने की आवश्यकता है कि फोन कब सोता है

मुझे अपने सभी स्क्रीन क्षेत्र को अपडेट किए बिना मेरे विजेट का एक छोटा सा हिस्सा अपडेट करने की भी आवश्यकता होगी, क्या यह संभव है ??

सभी को धन्यवाद।

उत्तर

3

मैं एक 4x4 विजेट है और मैं अद्यतन इसके बारे में एक छोटा सा टुकड़ा हर 15-20 सेकंड करना चाहते हैं।

Please make this optional or configurable

तो, सबसे अच्छा विकल्प कौन सा है?

Handler ऐप विजेट के साथ कुछ लेना देना नहीं है।

एक हमेशा चल रही सेवा bad for business है और यह ऐसी चीज है जो उपयोगकर्ताओं को कार्य हत्यारों के साथ हमला करने का कारण बनती है।

खराब विकल्पों में से सबसे अच्छा AlarmManager है।

सचमुच, सबसे अच्छा जवाब है "हर 15-20 सेकंड में इसका थोड़ा टुकड़ा अपडेट न करें"।

+0

अलार्ममेनर 15-20 सेकंड अपडेट के लिए सेवा से अधिक CPU गहन लगता है, मान लीजिए कि आपको डिजिटल घड़ी विजेट बनाने की आवश्यकता है, तो आप सेवा का उपयोग किये बिना इसे विश्वसनीय तरीके से कैसे अपडेट कर सकते हैं? आपके द्वारा लिंक किया गया लेख यह भी इंगित करता है कि अलार्ममेनगर कार्रवाई की प्राथमिकता बहुत अधिक हो सकती है। सेवा बंद होने पर सेवा के लिए एकमात्र समस्या विश्वसनीय रूप से रुकनी है। – JohnUopini

+1

"मान लीजिए कि आपको डिजिटल घड़ी विजेट बनाने की ज़रूरत है, आप इसे किसी सेवा का उपयोग किए बिना विश्वसनीय रूप से कैसे अपडेट कर सकते हैं" - आप इसे विजेट के रूप में नहीं लिखते हैं, लेकिन कस्टम होम स्क्रीन ऐप लिखते हैं जिसमें डिजिटल घड़ी होती है। "आपके द्वारा लिंक किया गया लेख यह भी इंगित करता है कि 'अलार्ममैनगर' कार्रवाई की प्राथमिकता बहुत अधिक हो सकती है।" - यही कारण है कि यदि आप महत्वपूर्ण काम कर रहे हैं तो आप एक 'IntentService' से शुरू होते हैं जो शुरू होता है, पृष्ठभूमि धागे में कुछ करता है, और चला जाता है। – CommonsWare

+1

"स्क्रीन के बंद होने पर सेवा के लिए एकमात्र समस्या विश्वसनीय रूप से रुकनी है।" - और यह स्मृति लेता है। और तथ्य यह है कि उपयोगकर्ता आपको कार्य हत्यारों के साथ हमला करेंगे क्योंकि स्मृति (या कम से कम अनुमानित स्मृति इसे उठाती है)। और तथ्य यह है कि एंड्रॉइड थोड़ी देर बाद आपकी सेवा समाप्त कर देगा (तेजी से एंड्रॉइड 2.2+ के मामले में), क्योंकि एंड्रॉइड उन उपयोगकर्ताओं को जवाब दे रहा है जो अनन्य सेवाओं को लिखने वाले डेवलपर्स का जवाब देते हैं। जैसा कि मैंने मूल रूप से लिखा था, सबसे अच्छा जवाब है "हर 15-20 सेकंड में इसका थोड़ा टुकड़ा अपडेट न करें"। – CommonsWare

संबंधित मुद्दे