एक सेवा और एक प्रसारण रिसीवर के बीच अंतर क्या है?


14

मैं सेवाओं और प्रसारण रिसीवरों के बारे में सुनता रहता हूं । उनके बीच क्या अंतर है, और वे मेरे दृष्टिकोण से मेरे एंड्रॉइड फोन के संचालन को कैसे प्रभावित करते हैं?


आप जानते हैं कि टीसीपी लेयर पर पोर्ट बनाने के बजाय हम बैटरी और बहुत सारी प्रोसेसिंग को बचाने के लिए हमेशा ब्रॉडकास्ट-रिसीवर्स बनाते हैं। जब एंड्रॉइड में कुछ ईवेंट होता है .... तो ब्रॉडकास्ट फोन के भीतर सभी ऐप में भेज दिया जाता है .. और यदि आप लिखा है कि घटना के लिए प्रसारण रिसीवर है ,,, यह स्वचालित रूप से कहा जाएगा। तकनीकी रूप से जो घटना घटी, उसे एंड्रॉइड के संदर्भ में इरादा कहा जाता है
राहुल रैना

जवाबों:


27

Android अनुप्रयोगों में तीन प्रकार के घटक होते हैं। सामान्य तौर पर, उपयोगकर्ताओं को उनके बारे में जानने की आवश्यकता नहीं होती है: वे ऐप लेखकों के लिए अपने ऐप में विशेष व्यवहार को प्रोग्राम करने का एक तरीका है। लेकिन अगर आप अपने ऐप्स के व्यवहार को किसी कार्य प्रबंधक के साथ निकटता से देख रहे हैं, या यदि आप टास्कर जैसे ऐप के साथ चीजों को स्वचालित कर रहे हैं, तो यह समझना उपयोगी है कि वे सिस्टम में एक साथ कैसे फिट होते हैं।

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

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

ऐप्स पृष्ठभूमि में लंबे समय से चल रही प्रक्रियाओं को करने के लिए सेवाओं का उपयोग कर सकते हैं, जैसे कि सर्वर से फ़ाइलें डाउनलोड करना, या ईमेल की जांच करना, या अपना स्थान जांचना। हालाँकि सेवाएँ सीधे आपके साथ दिखाई नहीं देतीं या आपसे संपर्क नहीं करती हैं, फिर भी वे "रनिंग ऐप्स" सूची में दिखाई देती हैं। से सेटिंग्स अनुप्रयोग, चुनें ऐप्स या एप्लिकेशन प्रबंधक , और फिर चल रहा है । आप उस तरह से एक सेवा को रोक सकते हैं, लेकिन यह आमतौर पर आवश्यक नहीं है। क्योंकि सेवाएँ प्रत्यक्ष रूप से दिखाई नहीं देती हैं, Android उन्हें गतिविधियों से कम महत्वपूर्ण मानता है, इसलिए जब आपके फ़ोन को अधिक मेमोरी की आवश्यकता होगी, तो वे सबसे पहले मारे जाएंगे।

प्रसारण रिसीवर तीसरे प्रकार के घटक हैं। सेवाओं की तरह, वे केवल पृष्ठभूमि में मौजूद हैं और आपके साथ सीधे बातचीत नहीं करते हैं। लेकिन सेवाओं के विपरीत, वे लंबे समय तक काम नहीं कर सकते या प्रदर्शन नहीं कर सकते: वे घटनाओं का जवाब देने के लिए मौजूद हैं। और गतिविधियों और सेवाओं के विपरीत, एक बार में एक से अधिक प्रसारण रिसीवर शुरू किए जा सकते हैं।

एक घटक एक इरादे को प्रसारित करता है, संभवतः एक ऐप पर, लेकिन एक विशेष ऐप को निर्दिष्ट किए बिना। इस मामले में, आशय आमतौर पर एक घटना का प्रतिनिधित्व करता है, जैसे कि बैटरी कम चलना। सिस्टम सभी प्रसारण रिसीवरों को ढूंढता है जिन्होंने एक ब्याज (एक इरादे फ़िल्टर का उपयोग करके ) पंजीकृत किया है , और प्रत्येक को बदले में चलाता है। प्रत्येक प्रसारण रिसीवर सीधे प्रतिक्रिया कर सकता है, उदाहरण के लिए एक अधिसूचना बनाकर, या यह आगे की कार्रवाई करने के लिए एक सेवा या गतिविधि शुरू कर सकता है। जैसे ही प्रसारण रिसीवर ने घटना को संभाला है, इसे रोक दिया जाता है और तब तक फिर से नहीं चलेगा जब तक कि इसी तरह की दूसरी घटना प्रसारित न हो जाए।

जब आप Google Play से कोई ऐप डाउनलोड करते हैं, तो एक साथ काम करने वाले सभी तीन घटकों का एक उदाहरण है। सबसे पहले, Google Play गतिविधि आपको सामग्री डाउनलोड करने के लिए चुनने के लिए दृश्य इंटरफ़ेस प्रदान करती है। ऐप्स की सूची एक गतिविधि हो सकती है; पुष्टि या भुगतान संवाद दिखाने के लिए "इंस्टॉल" बटन पर क्लिक करने से एक और गतिविधि शुरू होती है। जब आप पुष्टि करते हैं, तो संवाद गतिविधि एक सेवा शुरू करती है। सेवा तब भी सामग्री को डाउनलोड करना जारी रखेगी जब गतिविधि समाप्त हो गई हो और अब नहीं चल रही हो।

लेकिन शायद नया ऐप डाउनलोड करते समय फोन इंटरनेट कनेक्शन खो देता है। यदि ऐसा होता है, तो Google Play की डाउनलोड सेवा एक प्रसारण रिसीवर को पंजीकृत करेगी, एक इरादे फ़िल्टर के साथ यह कहने के लिए कि यह नेटवर्क कनेक्टिविटी परिवर्तनों में रुचि रखता है, और फिर सेवा स्वयं बंद हो जाएगी। जब फोन इंटरनेट से जुड़ता है, तो सिस्टम किसी घटना को प्रसारित करता है। एंड्रॉइड उस घटना के लिए प्रतीक्षा कर रहे किसी अन्य प्रसारण रिसीवर के साथ, Google Play सेवा पंजीकृत ब्रॉडकास्टर रिसीवर को शुरू करेगा। इस मामले में, प्रसारण रिसीवर फिर से डाउनलोड सेवा शुरू करेगा। सेवा डाउनलोड के रूप में सूचनाएँ बनाएगी, और जब यह समाप्त हो जाएगी, तो यह अन्य एप्लिकेशन को सूचित करने के लिए अपना प्रसारण भेजेगा कि नया पैकेज स्थापित किया गया है, और फिर खुद को रोक देगा। बदले में, यह अन्य ऐप से प्रसारण रिसीवर शुरू करेगा,

संक्षेप में:-

  • एक गतिविधि स्क्रीन पर एक खिड़की का प्रतिनिधित्व करती है; एक सेवा संभवतः लंबे समय तक चलने वाला पृष्ठभूमि कार्य करती है; एक प्रसारण रिसीवर एक घटना को संभालने के लिए, थोड़े समय के लिए चलता है।
  • तीनों का उपयोग इंटेंट्स का उपयोग करना शुरू किया जाता है, लेकिन एक अलग तंत्र का उपयोग करना। लॉन्च करने वाले ऐप को स्पष्ट रूप से बताना होगा कि किस प्रकार के घटक को शुरू करना है (प्रत्येक मामले में एक अलग विधि को कॉल करके)।
  • जब कोई ऐप किसी इरादे का उपयोग करके गतिविधि शुरू करता है, तो यह केवल एक गतिविधि शुरू करता है (संभवतः "पूर्ण कार्रवाई का उपयोग करके दिखा रहा है ..." संवाद आपको यह चुनने के लिए देता है), और वही सेवाओं के लिए जाता है, लेकिन एक इरादे को प्रसारित करने से कई प्रसारण शुरू हो सकते हैं। रिसीवर, संभवतः विभिन्न एप्लिकेशन से।
  • एक उपयोगकर्ता के रूप में, आप सीधे गतिविधियों के साथ बातचीत करते हैं; आप सेवाओं के साथ बातचीत नहीं करते हैं, लेकिन वे फोन को धीमा कर सकते हैं और संसाधनों का उपभोग कर सकते हैं; आप प्रसारण रिसीवर के साथ बातचीत नहीं करते हैं, और क्योंकि वे अल्पकालिक हैं, इसलिए आपको उन्हें प्रबंधित करने के बारे में चिंता करने की आवश्यकता नहीं है।

बहुत उपयोगी जवाब। मैं केवल कुछ की पुष्टि करना चाहता हूं: उन ऐप्स का क्या होगा जो उपयोगकर्ताओं द्वारा अक्षम हैं? क्या एंड्रॉइड कभी भी अपने प्रसारण रिसीवर को उन इंटेंटों के लिए शुरू करता है, जिनके लिए वे पंजीकृत हैं? या क्या वे अक्षम ऐप्स पृष्ठभूमि में अपनी सेवा चला सकते हैं? क्यों फोर्स-स्टॉप बटन को रिबूट के बाद भी अक्षम ऐप्स के लिए नहीं निकाला गया है? यह मेरे लिए स्पष्ट है कि उनकी गतिविधियों को लॉन्च नहीं किया जा सकता है।
Firelord

@ फ़ायरलॉर्ड यदि आपका कोई नया प्रश्न है, तो आपको इसे नए प्रश्न के रूप में पोस्ट करना चाहिए। टिप्पणियाँ गहराई से उत्तर देने की अनुमति नहीं देती हैं और अन्य आगंतुकों के लिए आपके प्रश्न को खोजने योग्य नहीं बनाती हैं।
दान हुलमे

महान पोस्ट, लेकिन वास्तव में, चार घटक हैं। सामग्री प्रदाता गायब हैं।
अलेक्जेंड्रे मार्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.