क्या यह एंड्रॉइड AsyncTask के लिए सुरक्षित है जो गतिविधि के निजी सदस्य फ़ील्ड को AsyncTask.doInBackground() में पढ़ने के लिए गतिविधि की आंतरिक कक्षा है? अग्रिम में धन्यवाद।बाहरी गतिविधि वर्ग निजी सदस्य फ़ील्ड तक पहुंचने के लिए आंतरिक AsyncTask के लिए सुरक्षित?
उत्तर
आम तौर पर, नहीं। यदि गतिविधि कॉन्फ़िगरेशन परिवर्तन से गुजर रही है और इसे नष्ट कर दिया गया है और फिर से बनाया गया है, तो आपका पृष्ठभूमि थ्रेड गलत उदाहरण से बात करेगा, जो आपके लिए समस्याएं पैदा कर सकता है।
आदर्श रूप से, AsyncTask
के doInBackground()
अपने लॉन्चिंग घटक (गतिविधि, सेवा इत्यादि) से स्वतंत्र रूप से चलाने में सक्षम होना चाहिए। मेरा सुझाव है कि आप अपने AsyncTask
पर एक कन्स्ट्रक्टर बनाएं और जो भी आवश्यक हो उसे पास करें। या, AsyncTask
को setRetainInstance()
का उपयोग करने वाले गतिशील खंड द्वारा प्रबंधित किया जाना चाहिए, जिस स्थिति में (AFAIK) खंड के निजी डेटा सदस्यों तक पहुंचने के लिए यह सुरक्षित होना चाहिए, क्योंकि टुकड़ा कहीं भी नहीं जा रहा है।
बहुत अच्छा मुद्दा, जिसने मुझे सोचा (और शायद मेरी परियोजनाओं में कुछ रिफैक्टरिंग का कारण बन जाएगा ...) – Guillaume
@ कॉमन्सवेयर इसलिए यह समस्याएं पैदा कर सकता है, लेकिन ये थ्रेडिंग के कारण नहीं हैं, विशेष रूप से स्मृति स्थिरता त्रुटियां। क्या वह सही है? –
@ जुलिएयन: ठीक है, स्मृति स्थिरता त्रुटियां * थ्रेडिंग के कारण * हैं। – CommonsWare
जब एक आंतरिक कक्षाएं संलग्न वर्ग के निजी सदस्यों (फ़ील्ड या फ़ंक्शंस) तक पहुंचती हैं, तो संकलक उन सदस्यों को एक्सेसर फ़ंक्शन उत्पन्न करेगा। यह encapsulation तोड़ने जाएगा, कुछ तर्क देते हैं कि यह एक अच्छी बात है या एक बुरा बात है।
- 1. किसी वर्ग को केवल किसी अन्य वर्ग के कुछ निजी सदस्यों तक पहुंचने में सक्षम बनाने के लिए कैसे करें?
- 2. यदि AsyncTask एक आंतरिक वर्ग नहीं है ... - कुछ प्रश्न
- 3. प्रोग्रेसडिअलॉग बाहरी AsyncTask
- 4. सी ++ निजी कार्यों के लिए आंतरिक संबंध?
- 5. स्टेटिक सदस्य वर्ग - कक्षा निजी और वर्ग सदस्य पैकेज-निजी घोषित करें?
- 6. जेनेरिक इटरेटर वैक्टर तक पहुंचने के लिए
- 7. निजी आंतरिक वर्ग अप्रत्याशित अनाम वर्ग
- 8. AsyncTask से कॉलिंग गतिविधि को संदर्भित करना (एक आंतरिक वर्ग के रूप में नहीं)
- 9. एंड्रॉइड AsyncTask गतिविधि संदर्भ
- 10. बाहरी वर्ग
- 11. Node.js से OpenSSL तक पहुंचने के लिए विभिन्न दृष्टिकोण
- 12. गतिविधि से संदेश भेजने के लिए गतिविधि
- 13. जावा नेस्टेड कक्षाओं में, संलग्न वर्ग आंतरिक कक्षाओं के निजी सदस्यों तक पहुंच सकता है?
- 14. जावा घोंसला वाले आंतरिक वर्ग का उपयोग बाहरी वर्ग चर
- 15. सुपरक्लास के निजी सदस्यों तक पहुंच
- 16. एक गिट रिपोजिटरी तक पहुंचने के लिए जेजीआईटी के साथ कुंजी का उपयोग सुरक्षित रूप से
- 17. एंड्रॉइड: AsyncTask से एक यूआई को कैसे अपडेट करें यदि AsyncTask एक अलग वर्ग में है?
- 18. निजी सदस्य उसी वर्ग के अन्य उदाहरणों से सुलभ
- 19. सी # निजी वर्ग के सदस्य को क्रमबद्ध करें
- 20. बाहरी वर्ग
- 21. क्या यह AsyncTask में एक टुकड़े के लिए एक मजबूत संदर्भ रखने के लिए सुरक्षित है?
- 22. गैर-स्थैतिक फ़ील्ड सदस्य के लिए स्थिर संदर्भ नहीं बना सकता है निजी चर
- 23. कक्षा में आंतरिक वर्ग का उपयोग करने वाले वर्ग?
- 24. प्रत्येक लूप के लिए नेस्टेड, आंतरिक लूप
- 25. जब यह वास्तव में (अनाम) आंतरिक कक्षाओं का उपयोग करने के लिए सुरक्षित रिसाव है?
- 26. केकपीएचपी: एपकंट्रोलर व्युत्पन्न नियंत्रक के मॉडल तक पहुंचने के लिए
- 27. बाहरी वर्ग ऑब्जेक्ट को आंतरिक कक्षा ऑब्जेक्ट
- 28. एकाधिक धागे से MySQL तक पहुंचने के लिए कैसे
- 29. "सदस्य-> सदस्य" के माध्यम से सी ++ सदस्य वर्ग तक पहुंच रहा है "सदस्य"
- 30. निजी भंडारों के लिए जिथब होस्टिंग कितना सुरक्षित होगा?
बहुत सामान्य प्रश्न, निजी सदस्य फ़ील्ड फ़ाइनल है? – Scorpion