मैं इन 3 पुस्तकालयों के साथ अपने अनुभव को साझा करना चाहूंगा: यूआईएल, पिकासो और वॉली। मैंने पहले यूआईएल का उपयोग किया था, लेकिन फिर मैं इस नतीजे पर पहुंचा कि मैं वास्तव में इसकी सिफारिश नहीं कर सकता और मैं इसके बजाय वॉली या पिकासो का उपयोग करने का सुझाव दूंगा, जो दोनों उच्च प्रतिभाशाली टीमों द्वारा विकसित किए गए हैं। यूआईएल बिल्कुल खराब नहीं है, लेकिन इसमें अन्य दो पुस्तकालयों के विस्तार पर ध्यान नहीं दिया गया है।
मैंने पाया कि यूआई यूआई प्रदर्शन के साथ कम अच्छा है; यह वॉली या पिकासो की तुलना में UI थ्रेड को लॉक करने के लिए जाता है। यह इस तथ्य के कारण हो सकता है कि यूआईएल छवि प्रतिक्रियाओं को बैचने का समर्थन नहीं करता है जबकि पिकासो और वॉली डिफ़ॉल्ट रूप से करते हैं।
इसके अलावा, मुझे UIL का डिस्क कैश सिस्टम पसंद नहीं आया। जब आप विभिन्न कार्यान्वयनों के बीच चयन कर सकते हैं, तो मुझे यह इंगित करने की आवश्यकता है कि फिलहाल कुल आकार और इकाई समाप्ति समय दोनों द्वारा यूआईएल डिस्क कैश को सीमित करने का कोई तरीका नहीं है । वॉली और पिकासो ऐसा करते हैं, और वे सर्वर द्वारा लौटाए गए समय समाप्ति समय का उपयोग डिफ़ॉल्ट रूप से करते हैं जबकि यूआईएल इसे अनदेखा करता है।
अंत में, यूआईएल आपको एक वैश्विक छवि लोडर कॉन्फ़िगरेशन सेट करने की अनुमति देता है जिसमें चयनित डिस्क कैश और मेमोरी कैश कार्यान्वयन और सेटिंग्स और अन्य विवरण शामिल हैं, लेकिन यह कॉन्फ़िगरेशन आपके ऐप में हर जगह लागू होगा। इसलिए यदि आपको दो अलग-अलग डिस्क कैश की तरह अधिक लचीलेपन की आवश्यकता है, तो यह यूआईएल के लिए एक नहीं है। दूसरी ओर वॉली आपको अपने स्वयं के विन्यास के साथ जितनी चाहें उतनी अलग छवि लोडर रखने की अनुमति देता है। पिकासो डिफ़ॉल्ट रूप से एक वैश्विक उदाहरण का उपयोग करता है, लेकिन आपको अलग-अलग कॉन्फ़िगर करने योग्य उदाहरण बनाने की भी अनुमति देता है।
इसे जमा करने के लिए: पिकासो के पास सबसे अच्छा एपीआई है लेकिन यह सभी HttpURLConnection
उदाहरणों के बीच साझा किए गए वैश्विक HTTP डिस्क कैश का उपयोग करता है , जो कुछ मामलों में बहुत अधिक प्रतिबंधक हो सकता है। वॉली के पास सबसे अच्छा प्रदर्शन और प्रतिरूपकता है, लेकिन यह उपयोगकर्ता के अनुकूल नहीं है और इसके लिए आवश्यक है कि आप इसे अपने जैसे काम करने के लिए एक मॉड्यूल या अपने खुद के दो लिखें। कुल मिलाकर मैं उन दोनों को यूआईएल के खिलाफ सुझाऊंगा।
संपादित करें (18 दिसंबर 2014): जब से मैंने यह प्रारंभिक उत्तर लिखा है तब से चीजें बदल गई हैं और मुझे लगा कि इसे सुधारना आवश्यक है:
पिकासो 2.4 पुरानी रिलीज़ की तुलना में और भी अधिक कॉन्फ़िगर करने योग्य है, और जब ओकेहट्प (जिसकी अत्यधिक अनुशंसा की जाती है) के साथ इसका उपयोग किया जाता है, तो यह प्रत्येक उदाहरण के लिए एक अलग डिस्क कैश का उपयोग करने में भी सक्षम है, इसलिए वास्तव में कोई प्रतिबंध नहीं है कि आप क्या कर सकते हैं। इससे भी महत्वपूर्ण बात, मैंने देखा कि पिकासो और ओकेहटप के प्रदर्शन में बहुत सुधार हुआ है और मेरी राय में यह अब एंड्रॉइड, पीरियड के लिए सबसे तेज़ इमेज लोडर समाधान है। कृपया ध्यान दें कि मेरे कोड में मैं हमेशा मेमोरी के उपयोग के .fit()
साथ .centerCrop()
या .centerInside()
कम मेमोरी उपयोग के संयोजन में उपयोग करता हूं और UI थ्रेड पर बिटमैप के आकार से बचता हूं । पिकासो सक्रिय रूप से विकसित और समर्थित है और यह निश्चित रूप से एक बड़ा प्लस है।
वॉली ने बहुत कुछ नहीं बदला है, लेकिन मैंने इस दौरान इसके साथ दो मुद्दों पर गौर किया:
- कभी-कभी भारी लोड के तहत, कुछ छवियों को कुछ डिस्क कैश भ्रष्टाचार के कारण लोड नहीं किया जाता है।
- NetworkImageView (इसके स्केल टाइप से सेंटरक्रॉप पर सेट) में प्रदर्शित थम्बनेल अन्य पुस्तकालयों के साथ जो मिलता है उसकी तुलना में काफी धुंधला है।
इन कारणों से मैंने वॉली का उपयोग बंद करने का फैसला किया।
यूआईएल अभी भी धीमा है (विशेष रूप से डिस्क कैश) और इसके एपीआई में अक्सर बदलने की प्रवृत्ति होती है।
मैंने ग्लाइड 3 नामक इस नई लाइब्रेरी का भी परीक्षण किया जो पिकासो की तरह एपीआई के साथ पिकासो की तुलना में अधिक अनुकूलित होने का दावा करती है। मेरे निजी अनुभव के अनुसार, यह वास्तव में पिकासो और वॉली की तुलना में धीमे लोड के तहत नेटवर्क अनुरोधों के दौरान धीमा है, यहां तक कि जब ओकेहैप के साथ संयोजन में उपयोग किया जाता है। इससे भी बदतर, यह एक गतिविधि छोड़ने पर लॉलीपॉप के तहत मेरे एप्लिकेशन के साथ कुछ क्रैश का कारण बना। अपने प्रतिस्पर्धियों पर इसके 2 लाभ अभी भी हैं:
- यह एनिमेटेड GIFs डिकोडिंग का समर्थन करता है
- यह डिस्क कैश में अंतिम डाउनस्कॉल किए गए बिटमैप्स को डालता है, जिसका अर्थ है कि डिस्क कैश से वापस पढ़ना बेहद तेज है।
निष्कर्ष: मैं अब पिकासो + ओक् थ्टप का उपयोग करने की सलाह देता हूं क्योंकि यह सबसे अच्छा लचीलापन, एपीआई, प्रदर्शन और स्थिरता संयुक्त प्रदान करता है। अगर आपको GIF सपोर्ट चाहिए तो आप ग्लाइड पर भी विचार कर सकते हैं।