2012-07-02 16 views
23

मैं एक खंड दृश्य को कैश करना चाहता हूं। मेरी गतिविधि में स्वाइप करने योग्य टैब हैं और प्रत्येक टैब एक अलग खंड को कॉल करता है। लेकिन जब मैं टैब के बीच स्वाइप करता हूं तो विभाजन खंड के विनाश के कारण संक्रमण धीमा लगता है, जिसे स्वाइप ऑपरेशन के दौरान पुनर्निर्मित किया जाता है। क्या किसी को पता है कि मैं इस मुद्दे को रोकने के लिए प्रत्येक खंड के दृश्य को कैसे कैश कर सकता हूं? मैं लाइब्रेरी समर्थन v4 और api 14एक खंड दृश्य कैश कैसे करें

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

+0

क्या आपने स्वयं को खंड में दृश्य को कैशिंग करने की कोशिश की है और ऑन-क्रेट व्यू पर आप कैश किए गए टुकड़े को वापस कर देते हैं? या विचार हमेशा नष्ट हो जाता है? – ffleandro

+0

क्या आप अपने "स्वाइप करने योग्य टैब" के लिए 'ViewPager' का उपयोग करते हैं? – Evos

+0

मैं स्वाइप करने योग्य टैब का उपयोग करता हूं – Release

उत्तर

23

ऐसा इसलिए है क्योंकि आंतरिक रूप से डिफ़ॉल्ट रूप से पेजर उस समय अधिकतम 3 पेज (टुकड़े) लोड करता है: एक प्रदर्शित, पिछले और अगले यदि आपके पास 5 टुकड़े हैं तो यह तब होगा जब आप पहले से आखिरी तक चले जाएंगे: (जहां x एक लोड किए गए fragmen है टी)

xx000 -> xxx00 -> 0xxx0 -> 00xxx -> 000xx

myPager.setOffscreenPageLimit(ITEMS_COUNT-1); 

का उपयोग कर इस पेजर बता देंगे उन सभी को रखने की कोशिश करें स्मृति में और हर स्वाइप के साथ नष्ट/नष्ट नहीं करें (स्मृति प्रबंधन पर नजदीक देखो)

+1

क्या यह टैब खंड के 'क्रिएटिव्यू' पर कॉल नहीं करेगा? (जहां खंड लेआउट दृश्य लोड किया गया है) – StarDust

+1

@StarDust हां, यह शुरुआत में एक ही समय में सभी टुकड़ों के लिए क्रिएटिव्यू को कॉल करेगा। यह मुश्किल है, आप स्मृति से बाहर हो सकते हैं या बस एक ब्लैक स्क्रीन या ब्लॉक प्राप्त करेंगे क्योंकि टुकड़ा लोडिंग प्रक्रिया का। यह समाधान अच्छा है अगर आपको 4 या 5 हल्के टुकड़े लोड करना पड़ता है लेकिन मैं इसे 10 भारी लोडिंग टुकड़ों के लिए नहीं करता। आप ऑफस्क्रीन पेजलिमिट को अपने टुकड़े की गिनती से कम किसी भी संख्या पर सेट कर सकते हैं, उदाहरण के लिए यदि आपके पास 10 पेज हैं और सीमा 4 पर सेट है और आप 6 वें स्क्रीन में हैं, तो यह दोनों 000 दिशाओं में 2 अतिरिक्त लोड करेगा ** x * * xx00 (मुझे लगता है कि सबसे अच्छा समाधान) – MariusBudin