2012-12-01 12 views
5

मैं कुछ अन्य वर्ग जो इनपुट पैरामीटर के रूप में संदर्भ की जरूरत है विधि कॉल करना चाहते हैं, लेकिन मैं सेवा में 3 संभावना है:सेवा में उपयोग करने के लिए कौन सा संदर्भ?

- getApplicationContext 
- getBaseContext 
- getApplication 

कौन सा ScreenService जो extends Service

मुख्य अलग है क्या में उपयोग करने के लिए। मैंने कुछ बार पहले पढ़ा है कि getAplicationContext का उपयोग करना अच्छा नहीं है। क्या यह सच है?

उत्तर

6

आवेदन संदर्भ एप्लिकेशन के जीवन-चक्र से जुड़ा हुआ है और यह हमेशा आवेदन के पूरे जीवन में समान होगा। तो यदि आप टोस्ट का उपयोग कर रहे हैं, तो आप एप्लिकेशन संदर्भ या यहां तक ​​कि गतिविधि संदर्भ (दोनों) का उपयोग कर सकते हैं क्योंकि आपके आवेदन में कहीं से भी टोस्ट उठाया जा सकता है और खिड़की से जुड़ा नहीं है।

गतिविधि संदर्भ गतिविधि के जीवन-चक्र से जुड़ा हुआ है और यदि गतिविधि की ऑनस्ट्रॉय उठाई जाती है तो इसे नष्ट किया जा सकता है।

getApplication() हालांकि यह एप्लिकेशन ऑब्जेक्ट का जिक्र है लेकिन एप्लिकेशन क्लास संदर्भ वर्ग को बढ़ाती है, इसलिए इसका उपयोग एप्लिकेशन संदर्भ प्रदान करने के लिए किया जा सकता है।

getApplicationContext() आवेदन संदर्भ प्रदान करता है।

getBaseContext() गतिविधि संदर्भ प्रदान करता है। के बाद से इस संदर्भ रहता तक आवेदन बंद हो जाता है

यह निर्भर करता है तुम क्यों जो उद्देश्य के लिए आप संदर्भ का उपयोग कर रहे,

getApplicationContext() सबसे पसंदीदा तरीका है।

getBaseContext() संदर्भ विजेट और दृश्यों के लिए उपलब्ध है।

तो एक टोस्ट संदेश में या जब कोई इरादा बनाते हैं, तो वे सभी का प्रभाव समान होता है getApplicationContext() का उपयोग करना सबसे सही है। टोस्ट किसी भी तरह के संदर्भ को स्वीकार नहीं करता है क्योंकि यह किसी भी तरह का दृश्य संलग्न नहीं है। यह एक अधिसूचना है।

+0

धन्यवाद SahiuMahajanMj – senzacionale

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