7

जैसा कि आप जानते हैं, हाल ही में Google ने अपने जीसीएम दस्तावेज़ को बदल दिया है, और वे दावा करते हैं कि IntentService अब आने वाले जीसीएम संदेशों को संभालने के लिए आवश्यक नहीं है। सभी हैंडलिंग BroadcastReceiver में किया जा सकता है।क्या जीसीएम संदेशों को संभालने के लिए IntentService का उपयोग जारी रखने का कोई कारण है?

एक सेवा (आमतौर पर एक IntentService) जो करने के लिए WakefulBroadcastReceiver को किसी से निपटने का काम:

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

अधिकांश ऐप्स IntentService का उपयोग क्यों करेंगे? क्या कोई परिदृश्य है जिसमें जीसीएम संदेश को सीधे BroadcastReceiver में काम नहीं करेगा?

उत्तर

10

अधिकतर ऐप्स एक IntentService का उपयोग क्यों करेंगे?

क्योंकि संदेश की प्रतिक्रिया में जो कुछ भी आप कर रहे हैं, वह 1-2 मिमी से अधिक ले जाएगा, जिसका अर्थ है कि आप मुख्य एप्लिकेशन थ्रेड से उस काम को प्राप्त करना चाहते हैं। प्रसारण के जवाब में ऐसा करने के लिए एक आम पैटर्न IntentService पर काम को प्रस्तुत करना है।

तो, अगर GCM संदेश के जवाब में अपने काम शामिल है:

  • डिस्क मैं/हे
  • आगे नेटवर्क आई/ओ
  • पर्याप्त (जैसे, अपने वेब सेवा से अतिरिक्त डेटा पुन: प्राप्त) गणना (उदाहरण के लिए, छवि प्रसंस्करण)

आप उस काम को करने के लिए IntentService का उपयोग करना चाहेंगे।

+0

उत्तर के लिए धन्यवाद! इसलिए, अगर मैं सही ढंग से समझता हूं, अगर जीसीएम संदेश की प्रतिक्रिया में केवल एक अधिसूचना प्रदर्शित होती है तो इरादा सेवा का उपयोग करने का कोई कारण नहीं है। क्या मैं सही हूँ? – Eran

+1

@Eran: यह संभवतः सुरक्षित है, यह मानते हुए कि आप 'अधिसूचना' दिखाने के हिस्से के रूप में डिस्क I/O नहीं कर रहे हैं (उदाहरण के लिए, 'अधिसूचना' सामग्री को पॉप्युलेट करने के लिए कुछ डेटाबेस जानकारी में पढ़ना)। – CommonsWare

+0

@CommonsWare I/O के रूप में माना जाने वाले साझािकरणों के लिए प्रतिबद्ध? –

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