मैं एक व्यापक प्रश्न में इस बारी करने के वास्तव में कड़ी मेहनत की कोशिश करेंगे: के रूप में LocationManager
और getLastKnownLocation()
और सभी के द्वारा निर्धारित कियाएंड्रॉइड संदर्भ बिना किसी गतिविधि के? और अन्य गतिविधि-कम प्रोग्रामिंग?
मैं एक स्ट्रिंग एक Android डिवाइस के शहर का नाम शामिल है कि प्राप्त करने के लिए एक विधि लिख रहा हूँ, कि ।
तब मुझे एहसास हुआ कि मुझे एक और गतिविधि में एक ही चीज़ फिर से करने की ज़रूरत है, तो क्यों न केवल एक पूरी तरह से अलग वर्ग (LocationFinder
) बनाना है कि मैं हर जगह डुप्लिकेट कोड लिखने के बजाय अपने प्रोग्राम में उपयोग कर सकता हूं?
लेकिन मैंने उन समस्याओं में भाग लिया है जो मुझे भ्रमित करते हैं। उदाहरण के लिए, यदि मैं इस वर्ग (LocationFinder
) को बना देता हूं, तो क्या इसे गतिविधि का विस्तार करना चाहिए, भले ही इसे वास्तव में कभी कल्पना न किया जाए? इस कक्षा में सभी प्रकार के गेटर्स होंगे जैसे getLastKnownCity()
या getCurrentCity()
और स्ट्रिंग लौटें। मुझे लगता है कि इसे गतिविधि वर्ग का विस्तार नहीं करना पड़ेगा, क्योंकि यह वास्तव में एक गतिविधि नहीं है।
लेकिन तब क्या प्रसंग मैं के लिए प्रयोग करते हैं:
Geocoder geocoder = new Geocoder(Context context, Locale locale)
?
इससे मुझे लगता है कि यह एक गतिविधि होनी चाहिए। इसलिए मैं गतिविधि बढ़ाया और
@Override
protected void onCreate(..............
साथ निर्माता की जगह है, लेकिन कुछ कारण यह है कि कभी नहीं समाप्त होता है कहा जाता हो रही है, यहां तक कि जब मैं डाल के लिए
String city = new LocationFinder().getLastKnownCity();
मेरे LocationFinder
के onCreate()
की बहुत पहली पंक्ति है
System.out.println("HEY!")
और यह कभी भी उस तक नहीं पहुंचता है। मुझे android.internal.os.LoggingPrintStream.println()
और अन्य सामान पर एक शून्य सूचक मिलता है।
प्लस, गतिविधि कक्षाओं से आने वाले सिस्टम स्थिरांक का एक गुच्छा है। उदाहरण के लिए, मुझे LOCATION_SERVICE
पर जाना होगा, जो एक स्ट्रिंग है, जिसे मैं गतिविधि को विस्तारित किए बिना प्राप्त नहीं कर सकता। निश्चित रूप से, मैं धोखा दे सकता हूं और केवल शाब्दिक स्ट्रिंग में डाल सकता हूं, लेकिन यह गलत लगता है।
धन्यवाद! बस सोच रहा है, क्या गतिविधि की संदर्भ में गुजरने के बजाय getAplicationContext() का उपयोग करना बुरा होगा, जैसा कि आप अनुशंसा करते हैं? मुझे अभी भी संदर्भों की समझ की कमी है, भले ही मैं उनकी परिभाषा को और अधिक पढ़ता रहता हूं ... मैं सिर्फ यह नहीं देखता कि एक गतिविधि का संदर्भ दूसरे से अलग क्या करता है। – andy
सच है, जब संदर्भ की ऑनस्ट्राय को बुलाया जाता है तो संदर्भ का संदर्भ नष्ट हो जाएगा। – frogmanx