2012-11-28 14 views
5

मैं इस पूरे एंड्रॉइड पर्यावरण में नया हूं और मुझे आमतौर पर कुछ संदेह हैं कि शायद आप बहुत ही बुनियादी ज्ञान और थोड़ा बेवकूफ मान सकते हैं। मैं अपने संदेह को समझाने की पूरी कोशिश करूँगा कि मेरे पास क्या है और मुझे यह समझने के लिए क्यों है।क्या आवेदन संदर्भ हमेशा कक्षा के समान ही है?

मैं एक ऐसा एप्लिकेशन कर रहा हूं जहां आप अधिसूचनाएं सेट कर सकते हैं ताकि आपको इच्छित विद्वान कक्षाएं याद दिल सकें। मैंने एक क्लास किया है जो ब्रॉडकास्ट रिसीवर को बढ़ाता है ताकि डिवाइस बूट होने के बाद यह सभी अलार्म रीसेट कर सके। वर्ग, समय यह कॉन्फ़िगर करना होगा, आदि मैं सभी अलार्म निकालते हैं और उन्हें alarmManager को इस तरह से सेट:

intent = new Intent(ctxt.getApplicationContext(), Notificacion.class); 
intent.putExtra("TAG", tag); 
intent.putExtra("SUBJECT", cursor2.getString(0)); 
intent.putExtra("AULA", cursor2.getString(1));     
displayIntent = PendingIntent.getBroadcast(ctxt, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT);    
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY*7, displayIntent); 

ठीक है, मुझे लगता है मैं एक डेटाबेस है जहाँ मैं अलार्म के बारे में जानकारी रखने के लिए है यह यहां तक ​​ठीक काम करना चाहिए। समस्या यह है कि जब आप एप्लिकेशन का उपयोग और आपको एक सूचना सेट करना चाहते हैं, तो आप इसे वर्ग "Schedule.class" से कर रहे हैं तो मंशा इस संदर्भ होता है:

Intent intent = new Intent(getApplicationContext(), Notification.class); 
PendingIntent pend = PendingIntent.getBroadcast(this, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT); 

ऐप्लिकेशन में, आप कर सकते हैं अलार्म हटाएं, और आपको ऐसा करने के लिए अलार्ममैनेजर.cancel (pend) को कॉल करना होगा। तो मेरा शक है कि यह इसे रद्द करने में सक्षम होगा।

यदि संदर्भ अलग हैं, तो यह लंबित इरादे से मिलान नहीं मिलेगा, क्योंकि यह ब्रॉडकास्ट रिसीवर (सीटीटीटी) के मेरे विस्तार में प्राप्त संदर्भ से सेट था, और अलार्म को संदर्भ के साथ सेट किया गया था Schedule.class से।

तो .. क्या एप्लिकेशन संदर्भ हमेशा समान है? मुझे पता है कि संदर्भ क्या है, इस बारे में अन्य वर्गों को जानकारी देने के लिए सेट किया गया है, लेकिन मुझे यकीन नहीं है कि अगर संदर्भ फ़िल्टर दिया गया था तो इरादा फ़िल्टर अलग-अलग होगा।

अग्रिम धन्यवाद!

उत्तर

2

AlarmManager प्रलेखन को देखते हुए रद्द करने के लिए विधि का उपयोग कर रहे:

public void cancel (PendingIntent operation)

जोड़ा गया एपीआई स्तर 1

में मेल खाने वाले आशय के साथ किसी भी अलार्म निकालें। किसी भी प्रकार के अलार्म, जिसका इरादा इस से मेल खाता है (जैसा कि filterEquals(Intent) द्वारा परिभाषित किया गया है), रद्द कर दिया जाएगा।

तो, Intent.filterEquals प्रलेखन कहते हैं निम्नलिखित:

public boolean filterEquals (Intent other)

जोड़ा गया एपीआई स्तर में 1

निर्धारित करें यदि दो उद्देश्यों आशय का उद्देश्यों के लिए ही कर रहे हैं संकल्प (फ़िल्टरिंग)। यही है, यदि उनकी कार्रवाई, डेटा, प्रकार, वर्ग और श्रेणियां समान हैं। यह इरादे में शामिल कोई अतिरिक्त डेटा की तुलना नहीं करता है।

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

+0

यही मैंने सोचा था। लेकिन मैं इस बारे में निश्चित नहीं हूं कि संदर्भ डेटा के भीतर होगा या नहीं, इसलिए यह अलग-अलग इरादों के रूप में फ़िल्टर करेगा। वैसे भी, मैं यह देखने के लिए कुछ परीक्षण करने की कोशिश करूंगा कि यह ठीक से काम करता है और मैं यहां अपडेट करूंगा। धन्यवाद! –

+0

नहीं, इरादा वर्ग में एमडीएटी चर एक यूआरआई है, इसलिए यह कोई मुद्दा नहीं होना चाहिए। – ajpolt

+0

ठीक है, तो सब स्पष्ट है। आपका बहुत बहुत धन्यवाद। यह पूरी तरह से ठीक काम करता है = डी –

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