अगर आपके पास अच्छी तरह से डिज़ाइन किया गया ऐसा व्यू है जो जेस्चर पर प्रतिक्रिया देता है और अलग-अलग स्थितियों के बीच ट्रांज़िशन करता है, तो पक्का करें कि व्यू तेज़ी से काम करे. अगर आपको ऐसा यूज़र इंटरफ़ेस (यूआई) नहीं चाहिए जो प्लेबैक के दौरान धीमा हो या अटकता हो, तो पक्का करें कि ऐनिमेशन लगातार 60 फ़्रेम प्रति सेकंड पर चल रहे हों.
व्यू को तेज़ी से लोड करना
व्यू को तेज़ी से लोड करने के लिए, उन रूटीन से गै़रज़रूरी कोड हटाएं जिन्हें अक्सर कॉल किया जाता है. onDraw()
से शुरुआत करें. इससे आपको सबसे ज़्यादा फ़ायदा मिलेगा. खास तौर पर, onDraw()
में मेमोरी के लिए जगह न छोड़ें, क्योंकि इससे गार्बेज कलेक्शन हो सकता है. इससे गेम में रुकावट आ सकती है. शुरुआत में या एनिमेशन के बीच ऑब्जेक्ट असाइन करें. ऐनिमेशन चलते समय कभी भी जगह न बांटें.
onDraw()
को छोटा बनाने के साथ-साथ, यह भी पक्का करें कि इसे कम से कम कॉल किया जाए. onDraw()
पर मिले ज़्यादातर कॉल, invalidate()
पर किए गए कॉल की वजह से मिले हैं. इसलिए, invalidate()
पर किए गए गैर-ज़रूरी कॉल हटा दें.
लेआउट को ट्रैवर्स करना भी एक महंगा ऑपरेशन है. जब कोई व्यू requestLayout()
को कॉल करता है, तो Android यूज़र इंटरफ़ेस (यूआई) सिस्टम, पूरी व्यू हैरारकी को ट्रैवर्स करता है. इससे यह पता चलता है कि हर व्यू का साइज़ कितना होना चाहिए. अगर इसे मेज़रमेंट में कोई अंतर मिलता है, तो यह हैरारकी को कई बार ट्रैवर्स कर सकता है. यूज़र इंटरफ़ेस (यूआई) डिज़ाइनर, कभी-कभी नेस्ट किए गए ViewGroup
ऑब्जेक्ट की डीप हैरारकी बनाते हैं. डीप व्यू की इन हैरारकी की वजह से, परफ़ॉर्मेंस से जुड़ी समस्याएं होती हैं. इसलिए, व्यू हैरारकी को जितना हो सके उतना कम रखें.
अगर आपके पास जटिल यूज़र इंटरफ़ेस (यूआई) है, तो उसके लेआउट को लागू करने के लिए, कस्टम ViewGroup
लिखें.
बिल्ट-इन व्यू के उलट, आपका कस्टम व्यू ऐप्लिकेशन के हिसाब से, अपने चाइल्ड व्यू के साइज़ और शेप के बारे में अनुमान लगा सकता है. इसलिए, मेज़रमेंट का हिसाब लगाने के लिए, इसे अपने चाइल्ड व्यू को ट्रैवर्स करने की ज़रूरत नहीं होती.
उदाहरण के लिए, अगर आपके पास कोई ऐसा कस्टम ViwGroup
है जो अपने सभी चाइल्ड व्यू के हिसाब से अपना साइज़ अडजस्ट नहीं करता है, तो आपको सभी चाइल्ड व्यू को मेज़र करने की ज़रूरत नहीं होती. अगर इस्तेमाल के कई उदाहरणों के लिए, पहले से मौजूद लेआउट का इस्तेमाल किया जाता है, तो इस ऑप्टिमाइज़ेशन को लागू नहीं किया जा सकता.