2010-07-22 9 views
13

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

इस विजेट को updatePeriodMillis की अनुमति देता है, जो हर 30 सेकंड में की तुलना में अधिक बार अद्यतन किया जाना चाहिए। मैं एक मिनट में लगभग एक बार मानता हूं।

एंड्रॉइड प्रोग्रामिंग के लिए नया होने के नाते, मैं ऐसा करने के कुछ तरीकों के बारे में सोच सकता हूं, लेकिन शायद मैं इसे इस तरह से कर रहा हूं जो बहुत अधिक बैटरी इत्यादि का उपभोग करता है, इसलिए मैं कुछ और जानकारी ढूंढ रहा हूं अनुभवी एंड्रॉइड डेवलपर्स।

मैं टाइमर कैसे शुरू करूं? मैं अपने अनुप्रयोग रन-टाइम से विजेट इंस्टेंस कैसे एक्सेस कर सकता हूं? और इसी तरह।

+8

एफवाईआई, 'अपडेटपेरियोडमिलिस' अपडेट आवृत्ति 30 ** मिनट ** है, सेकंड नहीं। –

उत्तर

21

मैं एक अलार्म रजिस्टर मेरी सेवा हर 1 मिनट शुरू करने के लिए होता है और सेवा विजेट यूआई अगर यह बैटरी जीवन को निष्क्रिय होने पर प्रभावित नहीं होना चाहिए

final Intent intent = new Intent(context, UpdateService.class); 
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0); 
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarm.cancel(pending); 
long interval = 1000*60; 
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending); 

AlarmManager.ELAPSED_REALTIME डिवाइस wakr नहीं होंगे अद्यतन होगा।

+4

"मैं एक अलार्म पंजीकृत करूंगा" - वह कोड कहां जाता है? आप 'अलार्ममेनगर' कहां पंजीकृत करते हैं? – jjnguy

+1

@jjnguy AlarmManager को पंजीकृत होने की आवश्यकता नहीं है, क्योंकि इसे 'context.getSystemService' से प्राप्त किया गया है। –

+2

यह बिल्कुल सहायक नहीं है! यह सब कोड कहां जाता है? विजेट का उपयोग करने वाले एक शुरुआती व्यक्ति के लिए, इसका उपयोग करने के लिए कोई उपयोग नहीं है ... – Virthuss

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