मेरे पास प्रत्येक पंक्ति पर 3 टेक्स्टव्यू फ़ील्ड के साथ एक साधारण सूची है। हम एक पृष्ठभूमि वेब सेवा कॉल (AsyncTask) से आने वाले डेटा के साथ तो उनके मूल्यों हर 2 सेकंड या अपडेट कर रहे हैंलिस्टव्यू के ऐरेएडाप्टर notifydatasetchanged() बहुत धीमी रेड्रा
हम वर्तमान लोगों के साथ आ रहा है मानों की तुलना, उन्हें एडाप्टर पर तदनुसार अद्यतन और अंत में notifyDataSetChanged() यदि
जरूरत बुलाबात यह है कि रेड्रा वास्तव में धीमा हो जाता है इस प्रकार पूरे यूआई को लटकता है जब हमें एक बार में 3 से अधिक अपडेट पंक्तियां मिलती हैं। बेशक हम सभी ListView प्रसिद्ध ऑप्टिमाइज़ेशन जैसे कुशल एडेप्टर दृष्टिकोण (setTag() और धारकों) का उपयोग कर रहे हैं, और getViewTypecount()/getItemViewType() प्राप्त करें। हमने लेआउटटॉप के साथ जितना संभव हो सके हमारे इंटरफ़ेस को अनुकूलित करने और चीजों को हल्का करने के लिए wrap_content चौड़ाई और ऊंचाइयों से बचने का प्रयास करने का प्रयास किया है।
हम अपने अपडेट पर महंगे संचालन नहीं करते हैं, केवल मानक सामान: टेक्स्ट व्यू टेक्स्ट, टेक्स्टकलर और पृष्ठभूमि रंग मूल्य बदलना।
केवल अजीब बात मैं देख सकता हूँ कि getView() प्रत्येक पंक्ति के लिए 3-4-5 बार कहा जाता है, हालांकि मैं उन सभी के रोमेन के संदेश पढ़ चुके है [1] से कहा कि कि
साथ कुछ भी गलत नहीं हैकोई विचार या संकेत हम इसे कैसे गति दे सकते हैं?
बहुत बहुत धन्यवाद!
यह लगभग लगता है जैसे आप आकर्षित करने में सक्षम होने से अधिक अपडेट प्राप्त कर रहे हैं - क्या आपने इसका परीक्षण करने के लिए 10 सेकंड तक अपडेट की आवृत्ति को कम करने का प्रयास किया है? यदि इससे मदद मिलती है तो आपको प्रत्येक अपडेट के साथ कार्य से कतार को साफ़ करने के लिए समाधान खोजने की आवश्यकता होगी। 2 सेकंड अक्सर होता है यदि आप स्वचालित कचरा संग्रह को 1 सेकंड तक ले सकते हैं (उम्मीद है कि अधिक नहीं) और अन्य सेवाएं भी अपडेट में देरी कर सकती हैं। –
कॉल लगातार हैं, इसलिए पिछले समाप्त होने पर नए लोगों को निष्पादित किया जाता है। – Albert
कचरा कलेक्टर सबसे खराब मामला 200ms से अधिक लेता है, यह 1.5-2 एस यूआई लटकने की तुलना में कुछ भी नहीं है जिसे ऐप प्रत्येक रेड्रा पर अनुभव करता है। रीफ्रेश दर यहां प्रभावित नहीं हो रही है, भले ही मैं इसे 10 के दशक तक बढ़ा दूं, कॉल को निकाल दिया गया है, फिर भी रेड्रो उन 2 सेकंड – Albert