2011-12-23 13 views

उत्तर

45

हां यह है, आपको AlarmManager को पुन: संसाधित करने के लिए "अलार्म" को देखने की आवश्यकता है। डिवाइस पर बैटरी जीवन के लिए यह बेहतर है, क्योंकि एक सेवा के विपरीत यह पृष्ठभूमि में लगातार नहीं चलता है। अलार्म broadcast receiver ट्रिगर करता है जो आपके कस्टम कोड को निष्पादित करेगा।

अंतिम नोट के रूप में - अलार्म के समय के लिए दैनिक मूल्य, दैनिक, आधे दैनिक और कई अन्य के लिए enum मान हैं हालांकि आप केवल वास्तविक मूल्य निर्धारित कर सकते हैं।

एक अच्छा उदाहरण का पालन अतः पोस्ट में पाया जा सकता है:

Alarm Manager Example

अद्यतन

नई सुविधाओं Android के लिए जोड़ा गया है। यदि आप इसे पढ़ रहे हैं तो मैं आपको सलाह दूंगा कि अब आप GcmNetworkManager देखें। यह बैटरी जीवन को अनुकूलित करता है और प्री-लॉलीपॉप काम करता है। लॉलीपॉप के लिए आप JobScheduler का उपयोग कर सकते हैं। मैं इन कक्षाओं को अलार्ममेनगर पर उपयोग करने की सलाह दूंगा।

+0

धन्यवाद, यह वास्तव में मैं क्या देख रहा था। – siemian

+0

@ ग्राहम स्मिथ ब्याज से बाहर, क्या आपने अपना खुद का लिखा था? –

+0

@ ग्राहम स्मिथ आपके द्वारा प्रदान किया गया लिंक टूटा हुआ है। क्या आप एक कामकाजी लिंक प्रदान कर सकते हैं? – Zapnologica

6

एक विकल्प के रूप में मैं वर्तमान सप्ताह तुलना कर रहा हूं

Calendar cal = Calendar.getInstance(); 
int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR); 

SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0); 
int weekOfYear = sharedPreferences.getInt("weekOfYear", 0); 

if(weekOfYear != currentWeekOfYear){ 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt("weekOfYear", currentWeekOfYear); 
    editor.commit(); 
    // Your once a week code here 
} 

मैं इस की वकालत नहीं कर रहा हूँ अलार्म समाधान की तुलना में बेहतर है। मैं बस एक अलग दृष्टिकोण दिखा रहा हूँ।

12

मुझे लगता है कि सबसे अच्छा फिट GcmNetworkManager है। असल में इसमें अलार्ममेनगर प्लस दृढ़ता से आपको जो कुछ भी चाहिए, इसलिए रीबूट के बाद नौकरी निष्पादित हो सकती है।

उदाहरण:

PeriodicTask task = new PeriodicTask.Builder() 
     .setService(MyTaskService.class) 
     .setTag(TASK_TAG_PERIODIC) 
     .setPeriod(5L) 
     .build(); 

mGcmNetworkManager.schedule(task); 
+1

आप सही हैं - यह शायद ऐसा करने का सामान्य तरीका बनने जा रहा है। मैंने 2,5 साल पहले अपना जवाब लिखा था, इसलिए चीजें आगे बढ़ती हैं। मैं तर्क दूंगा कि आपको एंड्रॉइड 5+ के लिए लॉलीपॉप जॉब शेड्यूलर के बारे में जोड़ने की आवश्यकता है क्योंकि आपको 'जीसीएमनेटवर्क प्रबंधक' का उपयोग नहीं करना है। मैं बीटीडब्ल्यू ऊपर उठाया। –

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