2010-04-06 11 views

उत्तर

110

Here is what the Android SDK says about sendStickyBroadcast():

एक sendBroadcast (आशय) कि "रोचक" जिसका अर्थ है आशय आप प्रसारण के बाद चारों ओर रहता भेज रहे हैं पूरा हो गया है, ताकि अन्य लोग जल्दी से कि डेटा पुनः प्राप्त कर सकते हैं प्रदर्शन के माध्यम से रजिस्टर रिसीवर का रिटर्न मूल्य (ब्रॉडकास्ट रिसीवर, इंटेंटफिल्टर)। अन्य सभी तरीकों से, यह sendBroadcast (इरादा) जैसा व्यवहार करता है।

ऑपरेटिंग सिस्टम के माध्यम से भेजे गए एक चिपचिपा प्रसारण का एक उदाहरण ACTION_BATTERY_CHANGED है। जब आप उस क्रिया के लिए registerReceiver() पर कॉल करते हैं - यहां तक ​​कि nullBroadcastReceiver के साथ - आपको Intent मिलता है जो उस क्रिया के लिए अंतिम प्रसारण था। इसलिए, आप बैटरी में राज्य के सभी भविष्य के राज्य परिवर्तनों के लिए आवश्यक रूप से पंजीकरण किए बिना बैटरी की स्थिति ढूंढने के लिए इसका उपयोग कर सकते हैं।

+6

बस इरादा कितना चिपचिपा है? जब आप रजिस्टर रीसीवर को दूसरी बार कॉल करते हैं तो क्या यह वही इरादा फिर से लौटाता है? (उस क्रिया के साथ कोई अतिरिक्त इरादा नहीं है।) – phreed

+0

चिपचिपा इरादों के साथ क्या होता है: शक्ति नीचे? स्क्रीन बंद हॆ? आदि – phreed

+20

@ मुक्त: "जब आप रजिस्टर को दूसरी बार कॉल करते हैं तो क्या यह फिर से वही इरादा वापस कर देता है?" -- हाँ। "सत्ता जाना?" - वे चले जाते हैं, जैसे राम में कुछ भी करता है। "स्क्रीन बंद हॆ?" -- कोई प्रभाव नहीं। – CommonsWare

37

प्रकार: - स्थानीय, सामान्य, आदेश दिया और स्टिकी

सामान्य प्रसारण

: - sendBroadcast()

का उपयोग करें: - अतुल्यकालिक प्रसारण

: - किसी भी रिसीवर ब्रॉडकास्ट प्राप्त नहीं करता कोई विशेष आदेश

आदेश दिया प्रसारण

: - sendOrderedBroadcast()

का उपयोग करें: - तुल्यकालिक प्रसारण

: - रिसीवर प्राथमिकता आधार में प्रसारण प्राप्त

: - हम भी बस इस प्रकार के प्रसारण को निरस्त कर सकते हैं

स्थानीय प्रसारण

: - का उपयोग केवल जब प्रसारण केवल एक ही प्रक्रिया के अंदर प्रयोग किया जाता है

स्टिकी प्रसारण

: - सामान्य प्रसारण आशय उपलब्ध नहीं है किसी भी अधिक हो जाने के बाद भेजने के लिए और प्रणाली द्वारा संसाधित किया गया था।

: - का उपयोग sendStickyBroadcast (आशय)

: - इसी इरादे, चिपचिपा है आशय जिसका अर्थ है आप रहता भेज रहे हैं के बाद चारों ओर प्रसारण पूरा हो गया।

: - इस वजह से रजिस्टररसीवर (ब्रॉडकास्ट रिसीवर, इंटेंटफिल्टर) के वापसी मूल्य के माध्यम से इस डेटा को तुरंत पुनर्प्राप्त कर सकते हैं।

: - इसके अलावा SendBroadcast (इरादा) के अलावा।

9

sendbroadcast() - सामान्य प्रसारण, लेकिन हम प्राथमिकता भी सेट कर सकते हैं।

sendstickybroadcast() - इस के साथ दिया गया इरादा भविष्य के उपयोगकर्ताओं के लिए छड़ी होगी जो कोड (गतिशील रिसीवर) के माध्यम से पंजीकरण कर रहे हैं। प्रसारण कि एंड्रॉयड के साथ चिपके रहते हैं जाएगा, और फिर से वितरित किया जाएगा या किसी भी प्रसारण रिसीवर से भविष्य के अनुरोधों को फिर से प्रसारित

किसी एक स्टिकी प्रसारण sendstickyBroadcast(intent); का उपयोग कर फिर उस प्रसारण भविष्य उपयोगकर्ताओं के लिए उपलब्ध हो जाएगा भेजता है जो गतिशील रिसीवर का उपयोग कर रहे हैं।

लेकिन अब आप sendStickyBroadcast() विधि यह

हटा दिया गया है एंड्रॉयड प्रलेखन से उपयोग नहीं करना चाहिए:

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

मुझे आशा है कि इस मदद करता है वांछित क्षुधा वर्तमान मूल्य को पुनः प्राप्त करने के लिए है।