गतिविधि और संदर्भ के बीच अंतर क्या है?


92

गतिविधि और संदर्भ समान हैं, या क्या अंतर हैं?

मुझे एक गतिविधि कब पास करनी चाहिए, और एक प्रसंग कब होना चाहिए?


@Egor Thnx man, और surly मैं इसका ध्यान रखूँगा .. सवाल पूछने से पहले .. क्या आप एक और सवाल में मेरी मदद कर सकते हैं .. Android में सभी गतिविधि की जड़ क्या है
Android

कृपया प्रश्न को स्पष्ट करने के लिए नीचे चर्चा की जाँच करें
Egor

बहुत बुरा इनमें से कोई भी जवाब बहुत पूरा नहीं है। यह पहला आइटम है जो Google खोज के लिए पॉप अप होता है।
SMBiggs

जवाबों:


118

जहां तक ​​मैं समझता हूं: संदर्भ आधार वस्तु है। इसलिए हर गतिविधि समान है जो अनुप्रयोग संदर्भ से प्राप्त होती है। इसका मतलब है कि हर गतिविधि और हर Applicationआईएस ए Context;

से developer.android.com गतिविधि

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.view.ContextThemeWrapperandroid.app.Activity

और आवेदन

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.app.Application

एक एप्लिकेशन संदर्भ तब तक रहता है, जब तक आपका ऐप जीवित है, जबकि गतिविधि संदर्भ आपकी गतिविधि के साथ मर जाता है (यह onDestroyउस गतिविधि के बाद मान्य नहीं है )।

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

आमतौर पर एंड्रॉइड फ्रेमवर्क विधियों पर जहां एक संदर्भ की उम्मीद की जाती है, इससे कोई फर्क नहीं पड़ता है कि आप कौन से पास करते हैं। यदि आप लंबे समय तक रहने वाले संदर्भों को एक संदर्भ में रख रहे हैं, लेकिन मेमोरीलीक्स के बारे में हमेशा जागरूक रहें


2
हां, मुझे क्षमा करें, मैंने लिंक की जांच कर ली है, वास्तव में संदर्भ गतिविधि का एक सुपरक्लास है। वैसे भी, यह कहना पूरी तरह से सही नहीं है कि गतिविधि एक संदर्भ है, गतिविधि एक अधिक जटिल वस्तु है, जबकि प्रसंग केवल एक ब्लॉक है जो जानकारी रखता है और संसाधनों तक पहुंच प्रदान करता है।
ईगोर

@ राफेल टी Thnx को उचित जवाब देने के लिए
Android

17
यह पूरी तरह से सही है अगर मैं ऑब्जेक्ट-ओरिएंटेड भाषाओं का उल्लेख करता हूं: जावा में प्रत्येक ऑब्जेक्ट Object.class से प्राप्त होता है, इसलिए FACT में सब कुछ एक ऑब्जेक्ट है। और अधिक विशिष्ट होने के लिए: एकता प्रसंग का एक विशेषज्ञता है। अगर मेरे पास एब्सट्रैक्ट क्लास एनिमल और दो क्लासेस हैं जो एनिमल (कैट, डॉग) से निकल रहे हैं, तो ये दोनों कम से कम एनिमल हैं। हर जगह एक जानवर की आवश्यकता होती है आप बिल्लियों या कुत्तों को पास करने के लिए ठीक हैं, क्योंकि यह कॉन्सेप्ट के लिए समान है! कृपया सूचित करें इससे पहले कि आप मुझे नीचा दिखाए
राफेल टी

1
"गतिविधि का संदर्भ तब तक रहता है, जब तक आपका ऐप जीवित है, जबकि गतिविधि का संदर्भ आपकी गतिविधि से मर जाता है" लगता है। पहले आवेदन का संदर्भ नहीं होना चाहिए ?
फर्स्टऑन

8

जैसा कि आप Android doc पर देख सकते हैं :

गतिविधि वर्ग "ContextThemeWrapper" से फैलता है, और यह "ContextWrapper" से, और "Context" से एक होता है।

तो, हाँ, एक गतिविधि प्रसंग का विस्तार करती है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.