2010-06-27 28 views
9

मैं हर घंटे आग लगाना चाहता हूं (5:00, 6:00, 7:00, आदि ...)। मैं एक धागे से एक लगातार पृष्ठभूमि सेवा के साथ की कोशिश की लेकिन इसकी वजह से सही समाधान नहीं था: एंड्रॉयड स्मृति प्रबंधन अलार्ममेनगर - हर घंटे के शीर्ष पर अलार्म दोहराने के लिए कैसे?

तो मैं के कारण,

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

    धन्यवाद!

उत्तर

15

जब आप अलार्म सेट करते हैं तो आपके पास दो बार होता है: पहला ट्रिगर समय, और अगला ट्रिगर अंतराल।

तब आपको शेष मिलीसेकंड की गणना अगले घंटे के लिए की जाती है, फिर दोहराए जाने वाले अंतराल के लिए एक घंटा निर्धारित करें।

// We want the alarm to go off 30 seconds from now. 
long firstTime = SystemClock.elapsedRealtime(); 
firstTime += remainingMilisecondsToTopHour; 
long a=c.getTimeInMillis(); 

// Schedule the alarm! 
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE); 
am.setRepeating(AlarmManager.ELAPSED_REALTIME, 
c.getTimeInMillis(), 1*60*60*1000, sender); 
+0

ठीक है, यह सही दृष्टिकोण है। धन्यवाद;) – daliz

+1

+1 अच्छा जवाब। आपने मेरा दिन बचाया आपको बहुत - बहुत धन्यवाद! एक बार फिर धन्यवाद। – Sajmon

+6

यह कोड थोड़ा अस्पष्ट लगता है। सी कहाँ से आता है? एक बनाया क्यों है, फिर कभी नहीं इस्तेमाल किया? –

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