स्टिकी ब्रॉडकास्ट क्या है?


90

मैं एंड्रॉइड डॉक्यूमेंट में इस शब्द के साथ आया था

ये ब्रॉडकास्ट हैं जिनका डेटा सिस्टम द्वारा समाप्त होने के बाद आयोजित किया जाता है, ताकि ग्राहक अगले प्रसारण के लिए इंतजार किए बिना उस डेटा को जल्दी से प्राप्त कर सकें।

इसका क्या मतलब है? क्या कोई इसका उपयोग किसी विशेष उदाहरण के साथ कर सकता है? मेरा मानना ​​है कि हमें इस आशय का उपयोग करने के लिए अनुमति का अनुरोध करना होगा? ऐसा क्यों?

<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.

3
08 / फरवरी / 2019, किसी को भी चिपचिपा प्रसारण खोजने और आधिकारिक डॉक से यहां समाप्त होने के लिएSticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.
fangzhzh

जवाबों:


110

यदि कोई गतिविधि onPauseसामान्य प्रसारण के साथ कॉल करती है, तो प्रसारण प्राप्त करने से चूक हो सकती है। इसे शुरू करने के बाद एक चिपचिपा प्रसारण की जाँच की जा सकती है onResume

अपडेट 6/23/2020

स्टिकी प्रसारण को हटा दिया गया है।

sendStickyBroadcastप्रलेखन देखें

इस विधि को एपीआई स्तर 21 में पदावनत किया गया था।

चिपचिपा प्रसारण का उपयोग नहीं किया जाना चाहिए। वे कोई सुरक्षा प्रदान नहीं करते हैं (कोई भी उन तक पहुंच सकता है), कोई सुरक्षा नहीं (कोई भी उन्हें संशोधित कर सकता है), और कई अन्य समस्याएं। अनुशंसित पैटर्न गैर-चिपचिपा प्रसारण का उपयोग रिपोर्ट करने के लिए है कि जब भी वांछित हो, तो वर्तमान मूल्य को पुनः प्राप्त करने के लिए एप्लिकेशन के लिए एक अन्य तंत्र के साथ कुछ बदल गया है।

लागू

Intent intent = new Intent("some.custom.action");
intent.putExtra("some_boolean", true);
sendStickyBroadcast(intent);

साधन


नमस्ते, मैं प्रसारण के सांख्यिकीय रूप से पंजीकृत होने के साथ चिपचिपा प्रसारण से भ्रमित हो रहा हूं। मैंने अभी कहीं पढ़ा है कि मैनिफ़ेस्ट फ़ाइल में प्रसारण को पंजीकृत करने और प्रोग्राम को पंजीकृत करने के बीच का अंतर केवल इतना है कि आगे प्रसारण प्रसारित नहीं होता है, लेकिन यह वहीं रहता है, जबकि बाद में एक onPause () पद्धति में प्रसारण को अनइंस्टाल करता है।
शाइस्ता नाज़

नोट: ज्यादातर मामलों में, चिपचिपा प्रसारण से बचा जाना चाहिए। अधिक जानकारी के लिए @Nikhil_Katre से जवाब में लिंक देखें
gMale

@ शाइस्ता: प्रकट रिसीवर तब भी काम करते हैं जब आपका ऐप निष्क्रिय हो जाता है, जबकि प्रोग्रामेटिक रिसीवर केवल तभी जवाब देता है जब उसके भीतर पंजीकृत होने वाला एप्लिकेशन चल रहा हो
galeale

@gmale तो, अगर हम गतिविधि कर रहे हैं और हम onPause () में हैं और हमने unregisterReceiver () को कॉल किया है .. क्या हम प्रसारण को तब प्राप्त करेंगे जब हम onResume में फिर से शुरू करेंगे ()
Kushal

1
@PaBBurke ऊपर दिए गए लिंक में मुझे नाम मर्फी नहीं मिला । यह लिंक मुझे सटीक उत्तर पर नहीं सवाल पर पुनर्निर्देशित करता है। क्या आप URL अपडेट कर सकते हैं?
विशाल छौड़वानी

11

sendStickyBroadcast()sendBroadcast(Intent)स्टिकी के रूप में एक ज्ञात कार्य करता है , अर्थात जिसे आप प्रसारण पूरा होने के बाद आसपास भेज रहे हैं, ताकि अन्य लोग उस डेटा को जल्दी से वापस प्राप्त कर सकें registerReceiver(BroadcastReceiver, IntentFilter)। अन्य सभी तरीकों से, यह वैसा ही व्यवहार करता है sendBroadcast(Intent)। ऑपरेटिंग सिस्टम के माध्यम से भेजे गए चिपचिपे प्रसारण का एक उदाहरण है ACTION_BATTERY_CHANGED। जब तुमने फोन कियाregisterReceiver() उस कार्रवाई के लिए - यहां तक ​​कि एक अशक्त के साथ BroadcastReceiver- आपको वह आशय मिलता है जो उस कार्रवाई के लिए अंतिम प्रसारण किया गया था। इसलिए, आप बैटरी के भविष्य के सभी परिवर्तनों के लिए आवश्यक रूप से पंजीकरण किए बिना बैटरी की स्थिति का पता लगाने के लिए इसका उपयोग कर सकते हैं।


8

एक चिपचिपा प्रसारण का मूल्य वह मूल्य है जो पिछले प्रसारण था और वर्तमान में चिपचिपा कैश में रखा गया है। यह एक प्रसारण का मूल्य नहीं है जो अभी प्राप्त हुआ था। मुझे लगता है कि आप कह सकते हैं कि यह एक ब्राउज़र कुकी की तरह है जिसे आप किसी भी समय एक्सेस कर सकते हैं। चिपचिपा प्रसारण विधियों के लिए डॉक्स के अनुसार अब स्टिक प्रसारण को हटा दिया गया है ( जैसे ):

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


3

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

आप मेरे ब्लॉग को देखें: यहां लिंक विवरण दर्ज करें


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