वॉली के परिप्रेक्ष्य को देखते हुए आपकी आवश्यकता के लिए कुछ फायदे हैं:
वॉली, एक तरफ, पूरी तरह से व्यक्तिगत, छोटे HTTP अनुरोधों को संभालने पर केंद्रित है। इसलिए अगर आपके HTTP रिक्वेस्ट हैंडलिंग में कुछ विचित्रताएं हैं, तो वॉली शायद आपके लिए एक हुक है। यदि, दूसरी ओर, आपके पास अपनी छवि हैंडलिंग में एक क्विक है, तो आपके पास एकमात्र वास्तविक हुक ImageCache है । "यह कुछ भी नहीं है, लेकिन यह बहुत कुछ नहीं है! या तो"। लेकिन इसके और भी कई फायदे हैं जैसे कि एक बार जब आप अपने अनुरोधों को परिभाषित करते हैं, तो उन्हें एक खंड या गतिविधि के भीतर से उपयोग करना समानांतर एस्कॉट्स के विपरीत दर्द रहित होता है।
वॉली के पेशेवरों और विपक्ष:
तो वॉली के बारे में क्या अच्छा है?
नेटवर्किंग हिस्सा सिर्फ छवियों के लिए नहीं है। वॉली को आपके बैक एंड का एक अभिन्न अंग माना जाता है। एक साधारण REST सेवा से दूर एक ताजा परियोजना के लिए, यह एक बड़ी जीत हो सकती है।
NetworkImageView पिकासो की तुलना में अनुरोध सफाई के बारे में अधिक आक्रामक है, और इसके जीसी उपयोग पैटर्न में अधिक रूढ़िवादी है। NetworkImageView विशेष रूप से मजबूत मेमोरी संदर्भों पर निर्भर करता है, और ImageView के लिए एक नया अनुरोध या जैसे ही ImageView स्थानांतरित होता है, वैसे ही सभी अनुरोध डेटा को साफ कर देता है।
प्रदर्शन। यह पोस्ट इस दावे का मूल्यांकन नहीं करेगी, लेकिन उन्होंने स्पष्ट रूप से अपने मेमोरी उपयोग पैटर्न में विवेकपूर्ण होने के लिए कुछ ध्यान रखा है। वॉली भी संदर्भ स्विचिंग को कम करने के लिए मुख्य थ्रेड को कॉलबैक करने का प्रयास करता है।
जाहिर तौर पर वॉली के पास वायदा भी है। यदि आप रुचि रखते हैं तो RequestFuture की जाँच करें।
यदि आप उच्च-रिज़ॉल्यूशन संपीड़ित चित्रों के साथ काम कर रहे हैं, तो यहां वॉली एकमात्र समाधान है जो अच्छी तरह से काम करता है।
वॉली को ओक्त्रप के साथ इस्तेमाल किया जा सकता है (ओकेर्टप का नया संस्करण बेहतर प्रदर्शन के लिए एनआईओ का समर्थन करता है)
गतिविधि जीवन चक्र के साथ वॉली अच्छा खेलता है।
वॉली के साथ समस्याएं:
चूंकि वॉली नई है, इसलिए अभी कुछ चीजें समर्थित नहीं हैं, लेकिन यह तय है।
मल्टीपार्ट अनुरोध (समाधान: https://github.com/vinaysshenoy/enhanced-volley )
स्थिति कोड 201 को एक त्रुटि के रूप में लिया जाता है, 200 से 207 तक स्थिति कोड अब सफल प्रतिक्रियाएं हैं। (फिक्स्ड: https://github.com/Vinayrraj/CustomVolley )
अद्यतन: Google वॉली की नवीनतम रिलीज़ में, 2XX स्थिति कोड बग अब ठीक हो गया है! फिकस किर्कपैट्रिक के लिए धन्यवाद!
यह कम प्रलेखित है, लेकिन बहुत से लोग गीथूब में वॉली का समर्थन कर रहे हैं, जावा जैसे प्रलेखन यहां पाए जा सकते हैं । Android डेवलपर वेबसाइट पर, आपको वॉली के माध्यम से नेटवर्क डेटा ट्रांसमिट करने के लिए गाइड मिल सकता है । और वॉली सोर्स कोड Google Git पर पाया जा सकता है
वॉली फ्रेमवर्क के रीडायरेक्ट पॉलिसी को हल करने / बदलने के लिए ओकेएचटीपी के साथ वॉली का उपयोग करें (ऊपर उल्लिखित कॉमन्सवेयर)
इसके अलावा आप पिकासो के साथ इस कम्पेयरिंग वॉली की इमेज लोडिंग को पढ़ सकते हैं
पुनः स्थापित:
यह स्क्वायर द्वारा जारी किया गया है , यह REST API's (अपडेट: Voila! NIO सपोर्ट के साथ) का उपयोग करने के लिए बहुत आसान है।
रेट्रोफिट के पेशेवरों:
वॉली की तुलना में, रेट्रोफिट का REST एपीआई कोड संक्षिप्त है और उत्कृष्ट एपीआई प्रलेखन प्रदान करता है और समुदायों में इसका अच्छा समर्थन है! परियोजनाओं में जोड़ना बहुत आसान है।
हम किसी भी क्रमांकन पुस्तकालय के साथ त्रुटि से निपटने के साथ इसका उपयोग कर सकते हैं।
अपडेट:
- रेट्रोफिट 2.0.0-बीटा 2 में बहुत अच्छे बदलाव हुए हैं
- OkHttp 2.0 के साथ रेट्रोफिट का संस्करण 1.6 अब java.io और java.nio को सपोर्ट करने के लिए Okio पर निर्भर है जो CPU और मेमोरी को बचाने के लिए कुछ चतुर चीजों को करने के लिए ByteString और Buffer का उपयोग करके आपके डेटा को एक्सेस, स्टोर और प्रोसेस करना बहुत आसान बनाता है । (FYI करें: यह मुझे NIO के समर्थन के साथ Koush की OIN लाइब्रेरी की याद दिलाता है !)
हम RxJava के साथ मिलकर Retrofit का उपयोग कर सकते हैं और संयोजन के लिए REST कॉल का उपयोग कर rxObservables का उपयोग करके बदसूरत कॉलबैक श्रृंखला (कॉलबैक नरक से बचने के लिए !!) कर सकते हैं ।
संस्करण 1.6 के लिए रेट्रोफिट का विपक्ष:
मेमोरी संबंधी त्रुटि से निपटने की कार्यक्षमता अच्छी नहीं है (पुराने संस्करणों में रेट्रोफिट / ओकेहटप के) यह सुनिश्चित नहीं है कि यह जावा एनआईओ समर्थन के साथ ओकिओ के साथ बेहतर है।
यदि हम इसे अनुचित तरीके से उपयोग करते हैं तो न्यूनतम थ्रेडिंग सहायता नर्क को वापस बुला सकती है।
(उपरोक्त सभी विपक्षों को रेट्रोफिट 2.0 बीटा के नए संस्करण में हल किया गया है)
================================================== ======================
अपडेट करें:
Android Async बनाम वॉली बनाम रेट्रोफिट प्रदर्शन बेंचमार्क (मिलीसेकंड, कम मूल्य बेहतर है):
(रेट्रोफिट बेंचमार्क जानकारी के ऊपर FYI करें जावा NIO सपोर्ट के साथ बेहतर होगा क्योंकि OKhttp का नया संस्करण NIO Okio लाइब्रेरी पर निर्भर है)
अलग-अलग दोहराव (1 - 25 बार) के साथ सभी तीन परीक्षणों में, वॉली कहीं भी 50% से 75% तेज था। समान समय की समान संख्या को पूरा करते हुए, AsyncTasks की तुलना में रेट्रोफ़िट 50% से 90% तक प्रभावशाली रूप से देखा गया। डैशबोर्ड टेस्ट सूट में, यह डेटा को कई सेकंड तेजी से लोड / पार्स करने में अनुवादित होता है। यह एक बड़े पैमाने पर वास्तविक दुनिया अंतर है। परीक्षणों को निष्पक्ष बनाने के लिए, AsyncTasks / Volley के लिए समय में JSON को पार्स करना शामिल था क्योंकि रेट्रोफ़िट यह स्वचालित रूप से आपके लिए करता है।
बेंचमार्क टेस्ट में जीत हासिल की!
अंत में, हमने अपने आवेदन के लिए रेट्रोफिट के साथ जाने का फैसला किया। न केवल यह हास्यास्पद रूप से तेज़ है, बल्कि यह हमारे मौजूदा आर्किटेक्चर के साथ काफी मेल खाता है। हम एक माता-पिता कॉलबैक इंटरफ़ेस बनाने में सक्षम थे जो स्वचालित रूप से अपने एपीआई के लिए कोई प्रयास नहीं करने के साथ त्रुटि से निपटने, कैशिंग, और पृष्ठांकन करता है। रेट्रोफिट में विलय करने के लिए, हमें अपने मॉडल GSON के अनुरूप बनाने के लिए अपने चरों का नाम बदलना पड़ा, कुछ सरल इंटरफेस लिखना, पुराने API से फ़ंक्शंस हटाना, और AsyncTasks का उपयोग न करने के लिए हमारे टुकड़े संशोधित करना। अब जब हमारे पास कुछ टुकड़े पूरी तरह से परिवर्तित हो गए हैं, तो यह बहुत दर्दनाक है। कुछ बढ़ते दर्द और मुद्दे थे जिन्हें हमें दूर करना था, लेकिन कुल मिलाकर यह आसानी से हो गया। शुरुआत में, हम कुछ तकनीकी मुद्दों / बगों में भाग गए, लेकिन स्क्वायर में एक शानदार Google+ समुदाय है जो इसके माध्यम से हमारी मदद करने में सक्षम था।
वॉली का उपयोग कब करें ?!
हम वॉली का उपयोग तब कर सकते हैं जब हमें छवियों को लोड करने की आवश्यकता होती है और साथ ही REST API का उपभोग करना पड़ता है!, एक ही समय में कई n / w अनुरोध के लिए नेटवर्क कॉल कतार प्रणाली की आवश्यकता होती है! यह भी कि वॉर्ल में रेट्रोफिट की तुलना में बेहतर मेमोरी संबंधित त्रुटि है!
OkHttp का उपयोग वॉली के साथ किया जा सकता है, रेट्रोफिट डिफ़ॉल्ट रूप से OkHttp का उपयोग करता है ! इसमें SPDY सपोर्ट, कनेक्शन पूलिंग, डिस्क कैशिंग, ट्रांसपेरेंट कम्प्रेशन है! हाल ही में, इसे ओकिओ लाइब्रेरी के साथ जावा एनआईओ का कुछ समर्थन मिला है ।
स्रोत, क्रेडिट: श्री जोश Ruesch द्वारा वॉली-बनाम-रेट्रोफिट
नोट: स्ट्रीमिंग के बारे में यह निर्भर करता है कि आप RTSP / RTCP की तरह किस प्रकार की स्ट्रीमिंग चाहते हैं।