लॉन्च करने के लिए ब्रॉडकास्ट रिसीवर का उपयोग करके मैं पुश अधिसूचना प्राप्त करने पर यूआई की स्थिति को अपडेट करने का प्रयास कर रहा हूं। ऐसा करने के लिए, मुझे AsyncTask
शुरू करना होगा जो कुछ नेटवर्क ऑपरेशंस करता है और फिर परिणाम के आधार पर यूआई अपडेट करता है।एक AsyncTask
BroadcastReceiver
के लिए दस्तावेज़, एक रिसीवर के भीतर अतुल्यकालिक ऑपरेशनों को करने के मुताबिक असुरक्षित है क्योंकि यह क्रियान्वित करने की प्रक्रिया के रूप में जल्द onReceive()
रिटर्न के रूप में मारा जा सकता है, यह मानते हुए कोई अन्य "एप्लिकेशन घटकों" इस प्रक्रिया में हो रहा है।
BroadcastReceiver
अपनी प्रक्रिया में चल रहा है, या एक ही प्रक्रिया में शामिल गतिविधि के रूप में? चूंकि मुझे अपडेट करने के लिए यूआई होने तक ही कार्य पूरा होने की परवाह है, इसलिए गतिविधि बंद होने पर AsyncTask
मरने से मुझे चिंता नहीं है। ब्रॉडकास्ट रिसीवर मानते हुए गतिविधि के समान प्रक्रिया में है, क्या यह रिसीवर के भीतर से किए गए कार्य को लॉन्च करने के लिए ठीक/सुरक्षित बनाता है?
संपादित करें:
स्पष्ट करने के लिए, मैं गतिविधि के onResume()
में रिसीवर को पंजीकृत कर रहा हूँ और यह onPause()
पंजीकरण रद्द, तो यह केवल उद्देश्य प्राप्त किया जाना चाहिए जब गतिविधि पहले से ही सक्रिय है।
एक 'BroadcastReceiver के बजाय Service' का उपयोग नहीं क्यों अगर इसके असुरक्षित? यह वही काम पूरा करेगा, लेकिन इस मुद्दे के बिना आप बात करते हैं। – Andy
@Andy मैं समझता हूँ कि एक 'Service' का उपयोग कर सभी परिस्थितियों में सुरक्षित हो जाएगा, लेकिन मैं यह निर्धारित करने के लिए कि क्या यह इस विशेष मामले में वास्तव में आवश्यक है कोशिश कर रहा हूँ। – jnackman
खैर यह है अगर आप इसके बारे में सोचते हैं। सेवा अतुल्यकालिक संचालन को चलाने के लिए एकदम सही हैं। इसलिए क्यों एक ही सीमा मौजूद नहीं है। BroadcastReceivers मुख्य रूप से की तरह है जब कुछ सिस्टम में होता है, वास्तव में नहीं है जब डेटा शुद्ध के माध्यम से अद्यतन किया जा रहा है अन्य बातों के लिए किया जाता है। इसलिए "प्रसारण"। जबकि एक 'Service' कि यह क्या है, एक सेवा आप पक्ष यह है कि उपयोगकर्ता के बारे में पता करने की जरूरत नहीं है पर चल रहे हैं। उम्मीद है कि समझ में आता है। – Andy