मेरे ऐप को प्रत्येक दिन एक विशिष्ट समय पर वेब से कुछ डेटा पकड़ने की आवश्यकता है। इसलिए मैं कार्य को शेड्यूल करने के लिए अलार्ममेनगर का उपयोग करता हूं और यह ठीक काम करता है।क्या मुझे AlarmManager के साथ लंबित INTent.getService() या getBroadcast का उपयोग करना चाहिए?
लेकिन जब विभिन्न उदाहरणों को देखते हैं तो लंबित इरादे की बात आती है जब अलार्ममेनगर से निपटने के दो तरीके होते हैं।
एक अलार्म बंद होने पर और रिसीवर के अंदर वास्तविक काम करने की सेवा शुरू होने पर एक प्रसारण रिसीवर को कॉल करने के लिए PendingIntent.getBroadcast()
का उपयोग करता है।
एक और दृष्टिकोण PendingIntent.getService()
का उपयोग करना है और उस अलार्म को बंद होने पर सीधे सेवा को कॉल करना है।
क्या कोई मुझे दो दृष्टिकोणों के बीच अंतर बता सकता है ताकि मैं तय कर सकूं कि किस पर भरोसा करना है?
संपादित करें: getService() का उपयोग करते समय जागने के लॉक को प्राप्त करने का एक और सवाल यह है कि?
WakeReminderIntentService.acquireStaticLock(context);
मैं सक्रिय करने वाले लॉक कैसे प्राप्त करना चाहिए अगर मैं बजाय की तरह सीधे सेवा को कॉल:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
उदाहरण के लिए, जब एक BroadcastReceiver का उपयोग कर रहा onReceive() में निम्न पंक्ति है
क्या मुझे इसे बस सेवा के भीतर से प्राप्त करना चाहिए?
यह वास्तव में एक तरफ या दूसरे से कोई फर्क नहीं पड़ता। आप IntentService या सेवा, या स्थानीय या वैश्विक प्रसारण का उपयोग कर सकते हैं। आप उन सभी में ऐसा करने में सक्षम होना चाहिए। –