स्क्रॉल कैश मूल रूप से एक ड्राइंग कैश है।
एंड्रॉइड में, आप ड्रॉइंग कैश (मूल रूप से बिटमैप) नामक कैश में अपनी ड्राइंग को स्टोर करने के लिए एक व्यू से पूछ सकते हैं। डिफ़ॉल्ट रूप से, एक ड्रॉइंग कैश अक्षम होता है क्योंकि यह मेमोरी लेता है लेकिन आप दृश्य को सीधे ड्रॉइंग कैशएनेबल या हार्डवेयर परतों (सेटलेयर टाइप) के माध्यम से बनाने के लिए कह सकते हैं।
तो यह क्यों उपयोगी है? चूंकि ड्रॉइंग कैश का उपयोग करके प्रत्येक फ्रेम पर दृश्य को फिर से निकालने की तुलना में आपकी एनीमेशन चिकनी बना देती है।
इस प्रकार की एनीमेशन हार्डवेयर भी तेज हो सकती है क्योंकि प्रतिपादन प्रणाली इस बिटमैप को ले सकती है और इसे जीपीयू में बनावट के रूप में अपलोड कर सकती है (हार्डवेयर परतों का उपयोग करते हुए) और उस पर तेज़ मैट्रिक्स मैनिप्लेशंस करें (जैसे अल्फा बदलना, अनुवाद करना, रोटेशन)। तुलना करें कि एनीमेशन करने के लिए आप प्रत्येक फ्रेम पर फिर से खींचे जा रहे हैं (ऑन ड्रा को बुलाया जाता है)।
किसी सूचीदृश्य के मामले में, जब आप फ़्लिंग करके स्क्रॉल करते हैं, तो आप संक्षेप में अपनी सूची के दृश्यों को एनिमेट कर रहे हैं (या तो उन्हें ऊपर या नीचे ले जा रहे हैं)। सूचीदृश्य उनके दृश्यमान बच्चों (और किनारों के पास कुछ संभावित रूप से दिखाई देने वाले बच्चों) के ड्राइंग कैश का उपयोग बहुत जल्दी करने के लिए करता है।
क्या ड्राइंग कैश का उपयोग करने का कोई नुकसान है? हां यह स्मृति का उपभोग करता है, यही कारण है कि डिफ़ॉल्ट रूप से इसे एक दृश्य में बंद कर दिया जाता है। ListView के मामले में, जैसे ही आप ListView को स्पर्श करते हैं और थोड़ा स्थानांतरित करते हैं (स्क्रॉल से टैप को अलग करने के लिए) कैश स्वचालित रूप से आपके लिए बनाया जाता है। दूसरे शब्दों में, जैसे ही ListView सोचता है कि आप स्क्रॉल/फ़्लिंग करने वाले हैं, यह आपके लिए स्क्रॉल/फ़्लिंग गति को एनिमेट करने के लिए स्क्रॉल कैश बनाएगा।
स्रोत
2013-07-07 21:02:44
सूची दृश्य के लिए डिफ़ॉल्ट रूप से स्क्रॉलिंग कैश सक्षम है। –
और यदि मैं ListView पर सॉफ्टलेयर सेट करता हूं और 'setScrollingCachedEnabled (false)' कहता हूं तो क्या होगा? क्या यह किसी भी बिटमैप कैश के बिना नरम प्रतिपादन पाइपलाइन का उपयोग करने में परिणाम देता है? – suitianshi