ठीक है, मैं कुछ यूआई के साथ एक Fragment
बनाया (जोड़ी बक्सें और सामान) और मैं एक सर्वर क्वेरी करने के लिए एक AsyncTask
चल इम के बाद से setRetainInstance
इस्तेमाल किया (अनुरोध केवल एक बार भेजा जा सकता है) और मैं की जरूरत है AsyncTask
का परिणाम। तो मेरा सवाल है: क्या यूआई के साथ पूरे टुकड़े को बरकरार रखना गलत है? मैंने कुछ उदाहरण देखे जहां setRetainInstance
का उपयोग करने के लिए लोग अतिरिक्त Fragment
का उपयोग करते हैं लेकिन क्या कोई अतिरिक्त गलत उपयोग नहीं कर रहा है ?? यदि setRetainInstance
का उपयोग करने में कोई समस्या है तो वह क्यों है? इसके बारे में प्रलेखन में कोई जानकारी नहीं मिली।setRetainInstance टुकड़ा
उत्तर
यदि आप अपना अभिविन्यास लॉक कर रहे हैं तो आपको ठीक होना चाहिए। अन्यथा यदि आप एक विशेष गतिविधि उदाहरण से जुड़े विजेट को बनाए रखते हैं तो आप मेमोरी लीक के साथ समाप्त कर सकते हैं।
भले ही आप setRetainInstance(true)
उपयोग करते हैं, अपने टुकड़ा अभी भी अपने विचारों को पुन: जब आप बारी बारी से होगा (आप एक कॉल onDestroyView
और फिर onCreateView
करने के लिए मिल जाएगा)। जब तक आप पिछले onDestroyView
के विचारों के संदर्भ नहीं रखते हैं, तब तक पुरानी गतिविधि का कोई रिसाव नहीं होगा। सबसे अच्छा तरीका स्पष्ट रूप से onDestroyView
में संदर्भों को स्पष्ट करना होगा, लेकिन onCreateView
में आपका कोड आम तौर पर उन संदर्भों को ओवरराइट करेगा।
ऑनलाइन कई उदाहरण हैं (कुछ आधिकारिक लोगों सहित) जहां लोग डेटा को बनाए रखने के लिए एक अलग टुकड़े (बिना दृश्य के) का उपयोग करते हैं। मान लीजिए कि मैंने ऊपर जो कहा है वह सही है, तो यह अनावश्यक है (लीक को रोकने के लिए)। कई मामलों में, आप क्लीनर कोड/आर्किटेक्चर के साथ समाप्त हो सकते हैं यदि आप एक अलग टुकड़े का उपयोग करते हैं जिसका उत्तरदायित्व डेटा को संभालने के लिए है और यूआई के बारे में चिंता न करें।
आप यह देखने के लिए जांच सकते हैं कि क्या आप using Eclipse MAT पर घूर्णन के बाद गतिविधि संदर्भों को लीक कर रहे हैं या नहीं।
- 1. फ्रैगमेंट # setRetainInstance (बूलियन) का उपयोग क्यों करें?
- 2. टुकड़ा
- 3. टुकड़ा के setRetainInstance (सही) एक अच्छा अभ्यास का उपयोग कर रहा है वास्तव में रोटेशन परिवर्तन को संभालने के लिए
- 4. टुकड़ा गतिविधि पकड़ OnKeyDown और टुकड़ा
- 5. गतिशील टुकड़ा
- 6. टुकड़ा ट्रांजिस्टियन
- 7. टुकड़ा placehoder
- 8. कैसे टुकड़ा
- 9. एक टुकड़ा
- 10. invalidateOptionsMenu टुकड़ा
- 11. कैसे टुकड़ा
- 12. जाओ सरणी टुकड़ा
- 13. टुकड़ा getArguments() रिटर्न अशक्त
- 14. EditText setText टुकड़ा
- 15. पायथन में विस्तारित टुकड़ा?
- 16. एक क्यूआर एक टुकड़ा
- 17. सी # नकली टुकड़ा प्रतिलिपि
- 18. कैसे एक टुकड़ा एंड्रॉयड
- 19. एंड्रॉयड टुकड़ा और GetWindow()
- 20. टुकड़ा shaders: आउटपुट चर
- 21. ग्रहण प्लगइन टुकड़ा
- 22. रेल टुकड़ा कैशिंग गाया
- 23. एसक्यूएल टुकड़ा फ़ाइल
- 24. एंड्रॉयड टुकड़ा मिल चौड़ाई
- 25. टेम्पलेट में django टुकड़ा संख्या
- 26. टुकड़ा एनीमेशन: setCustomAnimations और setTransitionStyle
- 27. टुकड़ा लेनदेन कस्टम एनिमेशन एंड्रॉयड
- 28. एंड्रॉयड (टुकड़ा और xml onclick)
- 29. एक टुकड़ा एक एक्सएमएल लेआउट
- 30. यूआरएल टुकड़ा और रेफरर हेडर
लेकिन फ्रैगमेंट से जुड़े विजेट नहीं हैं? शायद मुझे याद आती है कि टुकड़े कैसे काम करते हैं। – Raykud
भले ही अभिविन्यास बंद कर दिया गया हो, यह समस्याग्रस्त हो सकता है। एंड्रॉइड किसी भी विन्यास परिवर्तन के लिए दृश्य फिर से बनाता है। जबकि एक विन्यास परिवर्तन एक प्रदर्शन रोटेशन (सामान्य मामला), भाषा परिवर्तन, कुंजीपटल संलग्न/अलग और अन्य हो सकता है। स्क्रीन रोटेशन की देखभाल करना पूरी समस्या को हल नहीं करता है। – sstn