2012-11-17 69 views
5

प्रश्न: 1 => मैं 9 बजे से शाम 4 बजे तक एक सेवा चलाने के लिए चाहता हूं। मैं दो तरीकों की योजना बना रहा हूं। कौन सा सबसे अच्छा है?रोजाना सुबह 9 बजे से शाम 4 बजे तक सेवा कैसे चलाएं?

विधि 1: अंदर सेवा: (यह सेवा प्रारंभ पर पर गतिविधि के बनाने के जब पहली बार आवेदन शुरू होता है)

if (9 AM <=current time<=4 PM) 
{ 
    fetch data from server. 
} 

विधि 2:

गतिविधि में OnCreate उपयोग अलार्म प्रबंधक और अलार्म मैनेजर के आधार पर एक सेवा शुरू करें। फिर अगले दिन उठें और सेवा शुरू करें।

कौन सी विधि सर्वोत्तम है?

प्रश्न: 2 => सेवा कैसे ढूंढें प्रोग्रामेटिक रूप से चल रही है या नहीं?

+0

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

उत्तर

1

ON_BOOT प्रसारण प्राप्त करने के लिए ब्रॉडकास्ट रेसीवर लिखें (आपको अपने मैनिफेस्ट में उचित अनुमति और मंशा फ़िल्टर जोड़ने की आवश्यकता होगी)। ब्रॉडकास्ट रिसीवर केवल अलार्म प्रबंधक के साथ 9 बजे अधिसूचना बनाने के लिए मौजूद है। निर्धारित अलार्म में लंबित इंटेंट है जो सेवा लॉन्च करेगा। जाहिर है, हर 24 घंटे दोहराने के लिए अलार्म सेट करें।

लॉन्च होने पर, सेवा केवल 4 बजे तक सामान्य रूप से चलती है, जिस बिंदु पर यह स्वयं बंद हो जाती है।

सेवा की ऑनस्टार्ट कमांड() विधि को उचित झंडे वापस करनी चाहिए ताकि सिस्टम को इसे फिर से शुरू किया जा सके यदि यह दुर्घटनाग्रस्त हो जाता है या मार जाता है।

एकमात्र चीज जिसे मैं समझ नहीं पा रहा हूं यह है कि सेवा को पहली बार इंस्टॉल करने के लिए ऑटो-स्टार्ट कैसे करें। डिवाइस को रीबूट करने की प्रतीक्षा करना बहुत व्यावहारिक नहीं है। जब मैं इस तरह के ऐप्स लिखता हूं, तो वे आम तौर पर उस गतिविधि के साथ संयुक्त होते हैं जिसमें सेवा शुरू करने और रोकने के लिए नियंत्रण होता है।

+0

इसलिए मुझे गतिविधि ऑनक्रेट में जोड़ने के बजाय बूट टाइम प्रसारण रिसीवर में अलार्म प्रबंधक जोड़ने की आवश्यकता है। यदि ऐसा है, तो हमें एप्लिकेशन इंस्टॉल होने के बाद अलार्म प्रबंधक सेट करने के लिए डिवाइस को रीबूट करने की आवश्यकता है। – Ramprasad

+1

गतिविधि ऑनक्रेट() वास्तव में बेहतर विकल्प होगा, लेकिन यदि आप डिवाइस रीबूट के बाद स्वचालित रूप से पुनरारंभ करना चाहते हैं, तो आपको दोनों करना चाहिए। –

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