This answer मुझे बताता है कि recycle()
टाइपिंगएरे की विधि को कचरा इकट्ठा करने की अनुमति देता है। मेरा सवाल यह है कि TypedArray को कचरा इकट्ठा करने के लिए विशेष रूप से एक विधि की आवश्यकता क्यों है? नियमित वस्तु की तरह एकत्रित कचरा होने का इंतजार क्यों नहीं कर सकता?टाइप किए गए ऐरे को पुनर्नवीनीकरण क्यों किया जाना चाहिए?
9
A
उत्तर
5
यह कैशिंग पर्सिंग के लिए आवश्यक है। जब आप recycle
पर कॉल करते हैं तो इसका अर्थ यह है कि इस ऑब्जेक्ट को इस बिंदु से पुन: उपयोग किया जा सकता है। आंतरिक रूप से TypedArray
में कुछ एरे होते हैं ताकि प्रत्येक बार स्मृति आवंटित न किया जाए जब TypedArray
का उपयोग किया जाता है, यह Resources
कक्षा में स्थिर क्षेत्र के रूप में कैश किया जाता है। आप TypedArray.recycle()
विधि कोड देख सकते हैं:
/**
* Give back a previously retrieved StyledAttributes, for later re-use.
*/
public void recycle() {
synchronized (mResources.mTmpValue) {
TypedArray cached = mResources.mCachedStyledAttributes;
if (cached == null || cached.mData.length < mData.length) {
mXml = null;
mResources.mCachedStyledAttributes = this;
}
}
}
तो जब आप फोन recycle
अपने TypedArray
वस्तु बस वापस कैश करने के लिए दिया जाता है।
2
@Andrei Mankevich मैं बस एंड्रॉइड एसडीके का नवीनतम संस्करण देखता हूं, और ऐसा लगता है कि रीसायकल() में कुछ बदलाव किए गए हैं। जांच करें नीचे कोड:
/**
* Recycle the TypedArray, to be re-used by a later caller. After calling
* this function you must not ever touch the typed array again.
*/
public void recycle() {
if (mRecycled) {
throw new RuntimeException(toString() + " recycled twice!");
}
mRecycled = true;
// These may have been set by the client.
mXml = null;
mTheme = null;
mResources.mTypedArrayPool.release(this);
}
संबंधित मुद्दे
- 1. कोबोल को इंडेंट क्यों किया जाना चाहिए?
- 2. टाइप किए गए मॉडल
- 3. सॉर्ट किए गए रोटेटेबल ऐरे
- 4. टाइप किए गए मेटाप्रोग्रामिंग भाषा
- 5. टाइप किए गए डेटासेट
- 6. क्यों लागू किया जाना चाहिए अनन्य() एक ऐरे के लिए विधि?
- 7. पर्यवेक्षक पैटर्न को बहिष्कृत क्यों किया जाना चाहिए?
- 8. साझा किए गए संदर्भों को एक्सेस करना यूआई थ्रेड से किया जाना चाहिए?
- 9. स्टैनफोर्ड टाइप किए गए पार्सर
- 10. ईन्नोएम को कब आवंटित किया जाना चाहिए?
- 11. अपवाद संदेशों को वैश्विककृत किया जाना चाहिए
- 12. टाइप किए गए टाइप टेम्पलेट प्रकार
- 13. सी ++: निजी कार्यों को क्यों घोषित किया जाना चाहिए?
- 14. आंशिक तरीकों को शून्य क्यों किया जाना चाहिए?
- 15. टाइप किए गए ऑब्जेक्ट्स का जावास्क्रिप्ट सीरियलाइजेशन
- 16. टोकन को कैसे ताज़ा किया जाना चाहिए
- 17. लिंक किए गए सूचियों का उपयोग कब किया जाना चाहिए इसके वास्तविक विश्व उदाहरण क्या हैं?
- 18. एनम बनाम मजबूत टाइप किए गए enum
- 19. टाइप किए गए डेटासेट: एक अच्छी पसंद या खराब - किसी को अपने अनुप्रयोगों में टाइप किए गए डेटासेट का उपयोग क्यों करना चाहिए या नहीं?
- 20. लंबे मतदान में session_write_close का उपयोग क्यों किया जाना चाहिए?
- 21. वास्तविक समय में अनुकरण क्यों किया जाना चाहिए?
- 22. मजबूत टाइप किए गए गतिशील लिंक सॉर्टिंग
- 23. जावास्क्रिप्ट टाइप किए गए ऐरे को जावास्क्रिप्ट में कैसे परिवर्तित करें Array
- 24. तर्क अपवाद यूनिट परीक्षण किया जाना चाहिए?
- 25. एक ऐरे से सॉर्ट किए गए आइटम को कैसे जोड़ें?
- 26. दृढ़ता से टाइप किए गए एमवीसी
- 27. नोडजेस बफर बनाम टाइप किए गए सरणी
- 28. जावा: क्यों स्थानीय चर अंतिम घोषित किया जाना चाहिए
- 29. "पीआईएमपीएल" मुहावरे का उपयोग क्यों किया जाना चाहिए?
- 30. एक सही अग्रेषण समारोह क्यों टेम्पलेट किया जाना चाहिए?
/** * TypedArray, एक बाद की कॉल करने वाले को करने के लिए फिर से इस्तेमाल किया जा रीसायकल। पर कॉल करने के बाद * यह फ़ंक्शन आपको कभी भी टाइप किए गए सरणी को कभी भी स्पर्श नहीं करना चाहिए। */ सार्वजनिक शून्य रीसायकल() { अगर (mRecycled) { नया रनटाइम अपवाद (टूस्ट्रिंग() + "दो बार पुनर्नवीनीकरण" फेंक दें;); } mRecycled = true; // ये ग्राहक द्वारा निर्धारित किए जा सकते हैं। एमएक्सएमएल = शून्य; mTheme = null; mResources.mTypedArrayPool.release (यह); } – Sam003