2013-03-22 4 views
17

कोई भी एंड्रॉइड में scrolling cache के अर्थ की व्याख्या कर सकता है। मैं इस शब्द पर ठोकर खाई, लेकिन एंड्रॉइड आधिकारिक वेबसाइट या वेब पर स्पष्टीकरण खोजने में असमर्थ था।स्क्रॉलिंग कैश?

सब मुझे मिल सकता था कि मैं इसे चालू/बंद कैसे कर सकता हूं।

धन्यवाद।

उत्तर

26

स्क्रॉल कैश मूल रूप से एक ड्राइंग कैश है।

एंड्रॉइड में, आप ड्रॉइंग कैश (मूल रूप से बिटमैप) नामक कैश में अपनी ड्राइंग को स्टोर करने के लिए एक व्यू से पूछ सकते हैं। डिफ़ॉल्ट रूप से, एक ड्रॉइंग कैश अक्षम होता है क्योंकि यह मेमोरी लेता है लेकिन आप दृश्य को सीधे ड्रॉइंग कैशएनेबल या हार्डवेयर परतों (सेटलेयर टाइप) के माध्यम से बनाने के लिए कह सकते हैं।

तो यह क्यों उपयोगी है? चूंकि ड्रॉइंग कैश का उपयोग करके प्रत्येक फ्रेम पर दृश्य को फिर से निकालने की तुलना में आपकी एनीमेशन चिकनी बना देती है।

इस प्रकार की एनीमेशन हार्डवेयर भी तेज हो सकती है क्योंकि प्रतिपादन प्रणाली इस बिटमैप को ले सकती है और इसे जीपीयू में बनावट के रूप में अपलोड कर सकती है (हार्डवेयर परतों का उपयोग करते हुए) और उस पर तेज़ मैट्रिक्स मैनिप्लेशंस करें (जैसे अल्फा बदलना, अनुवाद करना, रोटेशन)। तुलना करें कि एनीमेशन करने के लिए आप प्रत्येक फ्रेम पर फिर से खींचे जा रहे हैं (ऑन ड्रा को बुलाया जाता है)।

किसी सूचीदृश्य के मामले में, जब आप फ़्लिंग करके स्क्रॉल करते हैं, तो आप संक्षेप में अपनी सूची के दृश्यों को एनिमेट कर रहे हैं (या तो उन्हें ऊपर या नीचे ले जा रहे हैं)। सूचीदृश्य उनके दृश्यमान बच्चों (और किनारों के पास कुछ संभावित रूप से दिखाई देने वाले बच्चों) के ड्राइंग कैश का उपयोग बहुत जल्दी करने के लिए करता है।

क्या ड्राइंग कैश का उपयोग करने का कोई नुकसान है? हां यह स्मृति का उपभोग करता है, यही कारण है कि डिफ़ॉल्ट रूप से इसे एक दृश्य में बंद कर दिया जाता है। ListView के मामले में, जैसे ही आप ListView को स्पर्श करते हैं और थोड़ा स्थानांतरित करते हैं (स्क्रॉल से टैप को अलग करने के लिए) कैश स्वचालित रूप से आपके लिए बनाया जाता है। दूसरे शब्दों में, जैसे ही ListView सोचता है कि आप स्क्रॉल/फ़्लिंग करने वाले हैं, यह आपके लिए स्क्रॉल/फ़्लिंग गति को एनिमेट करने के लिए स्क्रॉल कैश बनाएगा।

+6

सूची दृश्य के लिए डिफ़ॉल्ट रूप से स्क्रॉलिंग कैश सक्षम है। –

+0

और यदि मैं ListView पर सॉफ्टलेयर सेट करता हूं और 'setScrollingCachedEnabled (false)' कहता हूं तो क्या होगा? क्या यह किसी भी बिटमैप कैश के बिना नरम प्रतिपादन पाइपलाइन का उपयोग करने में परिणाम देता है? – suitianshi

0

मुझे लगता है कि आप निम्नलिखित के बारे में बात कर रहे हैं:

50 आइटम जहां केवल 10 आइटम दिखाई दे रहे हैं की एक सूची की कल्पना करें। एंड्रॉइड एक सूची आइटम में अगले और पिछले (अनुमान) 5 आइटम कैश करेगा।

जब आप सूची के माध्यम से स्क्रॉल करना प्रारंभ करते हैं तो यह अदृश्य एडाप्टर के फ़ंक्शन getView() का उपयोग करके अदृश्य आइटम दृश्यों का पुन: उपयोग करेगा उदाहरण के लिए यदि आप शीर्ष पर स्क्रॉल कर रहे हैं तो यह नीचे पर एक दृश्य लेगा और इसे शीर्ष पर रखेगा नए आंकड़े।

तो स्क्रॉलिंग कैश दृश्यमान वस्तुओं के ऊपर/नीचे के अगले और पिछले आइटम हैं।

+0

यह आधिकारिक स्पष्टीकरण http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:scrollingCache – vovahost

+0

यह गलत है। जिस कैश के बारे में आप बात कर रहे हैं वह रीसाइक्लिंग है और स्क्रॉलिंग कैश नहीं है जो ड्रॉइंग कैश है। नीचे मेरा जवाब देखें। –

1

स्क्रॉलिंग कैश को "सूची दृश्य की दुनिया" के व्याख्यान में पूर्ण विस्तार से समझाया गया है।

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

स्क्रॉलिंग कैश डिफ़ॉल्ट रूप से सक्षम है, कम से कम सूची दृश्य के लिए।यही कारण है कि यदि आपके लिए प्रदर्शन महत्वपूर्ण है, तो आपको इसे अक्षम करने पर विचार करना चाहिए।

संबंधित मुद्दे