2011-09-18 12 views
12

ठीक है, एंड्रॉयड में, broadcastReceiver में एक और सेवा को फोन broadcastReceiver में कुछ कर रही है और के बीच क्या अंतर है? मुझे लगता है कि वे दोनों पृष्ठभूमि में चलते हैं, है ना?BroadcastReceiver बनाम सेवा

वास्तव में, क्या मुझे क्या करना है है: AlarmManager: (9:00 बजे नाश्ता खाने जैसे) डेटाबेस से, और की स्थापना को दिखाने के लिए

रोजमर्रा के कुछ समय में, डाउनलोड उपयोगकर्ता घटना घटना के बारे में अधिसूचना।

अब मैंने उपर्युक्त कार्य करने के लिए अलार्म प्रबंधक स्थापित किया है। और मुझे परेशान है कि मैं इसे ब्रॉडकास्ट रिसीवर में सीधे पूरा कर सकता हूं या इसे पूरा करने के लिए ब्रॉडकास्ट रिसीवर में कॉल सेवा कर सकता हूं।

धन्यवाद।

उत्तर

16

आप (Android Blog से उद्धृत) वजह से संभव के रूप में एक BroadcastReceiver में रूप में छोटे प्रसंस्करण करना चाहिए

जब एक प्रसारण से निपटने, आवेदन की एक निश्चित सेट दिया जाता है समय (वर्तमान में 10 सेकंड) जिसमें इसके काम करने के लिए। यदि उस समय पूर्ण नहीं होता है, तो एप्लिकेशन को गलत व्यवहार माना जाता है, और इसकी प्रक्रिया तुरंत पृष्ठभूमि में स्थिति में फेंक दी जाती है, यदि आवश्यक हो तो स्मृति के लिए मारे जा सकते हैं।

5

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

प्रक्रिया जीवनचक्र

एक प्रक्रिया है कि वर्तमान में एक BroadcastReceiver निष्पादित हो रहा है (जो है, वर्तमान में अपने onReceive (संदर्भ में कोड, आशय) विधि चल) माना जाता है एक अग्रभूमि प्रक्रिया और हो जाएगा चरम स्मृति दबाव के मामलों के अलावा प्रणाली द्वारा चल रहा है।

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

इसका मतलब है कि लंबे समय से चलने वाले संचालन के लिए आप अक्सर सेवा को ब्रॉडकास्ट रिसीवर के साथ संयोजन में रखने के लिए प्रक्रिया को अपने ऑपरेशन के पूरे समय सक्रिय रखने के लिए उपयोग करेंगे।

से: BroadcastReceiver

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