2013-01-19 16 views
12

मैंने आज देखा कि पेजर एडाप्टर को बड़ी मात्रा में कॉल कहा जाता है। धीरे-धीरे पृष्ठों को स्क्रॉल करते समय मैंने 3 9 3 की गणना की। मैंने this question देखा लेकिन यह वास्तव में मुझे एक अच्छा जवाब प्रदान नहीं किया।PagerAdapter में GetCount को कितनी बार बुलाया जाता है?

  1. इस सामान्य व्यवहार
  2. यदि हां, तो क्यों यह है कि getCount विधि इतनी बार कहा जाता है है?

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

+0

जब आप अपने प्रश्नों के उत्तर खोजने के लिए 'ViewPager' को स्रोत कोड पढ़ते हैं, तो आपने क्या सीखा? – CommonsWare

+0

@ कॉमन्सवेयर मैंने सीखा कि यह कई स्थानों पर उपयोग किया जाता है। विशेष रूप से OnTouchEvent। मैं अनुमान लगा रहा हूं कि यह वह जगह है जहां हर बार जब मैं पेजर को स्थानांतरित करता हूं तो इसे बुलाया जाता है। क्या ये सही है? – Qw4z1

+3

मैंने इस क्षेत्र में 'ViewPager' को नहीं देखा है। यदि प्रत्येक टच इवेंट पर 'getCount() 'कहा जाता है, तो यह निश्चित रूप से उच्च कॉल गिनती की व्याख्या करेगा। – CommonsWare

उत्तर

4

जैसा कि आपने निष्कर्ष निकाला है कि इसे टचवेन्ट में बहुत उपयोग किया जाता है। जब भी आप स्क्रीन से बातचीत करते हैं, तो टच मूव और रिलीज इवेंट्स पर ऑन टचवेन्ट को बुलाया जाता है। केवल एक पिक्सेल को स्थानांतरित करने के परिणामस्वरूप इस विधि के लिए संभावित कॉल होगा।

व्याख्या करने के लिए और कुछ नहीं है, यह वही तरीका है जिसे लागू किया गया है। आमतौर पर adapter.getCount को List.getSize या Cursor.getCount जैसे कुछ के साथ कार्यान्वित किया जाता है। और लगभग शून्य ओवरहेड है। यदि यह एक समस्या है, तो आप ListAdapter.getCount विधि को अनुकूलित करें, गिनती कैश करें या ऐसा कुछ करें। आवश्यकता होने पर केवल जटिल चीजें करें और जब तक यह अमान्य न हो जाए तब तक परिणाम कैश करें।

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