আমি এই 3 টি গ্রন্থাগারের সাথে আমার অভিজ্ঞতাটি ভাগ করতে চাই: ইউআইএল, পিকাসো এবং ভল্লি। আমি আগে ইউআইএল ব্যবহার করেছি তবে তারপরে আমি এই সিদ্ধান্তে পৌঁছেছি যে আমি এটির সুপারিশ করতে পারি না এবং আমি ভল্লি বা পিকাসো ব্যবহার করার পরামর্শ দেব যা উভয়ই অত্যন্ত প্রতিভাবান দল দ্বারা বিকাশিত। ইউআইএল মোটেও খারাপ নয় তবে এতে অন্য দুটি গ্রন্থাগারের বিবরণে মনোযোগের অভাব রয়েছে।
আমি ইউআইআই পারফরম্যান্সের সাথে ইউআইএল কম সুন্দর হতে দেখলাম; এটি ভল্লি বা পিকাসোর চেয়ে বেশি পরিমাণে ইউআই থ্রেড লক করতে পারে। পিকাসো এবং ভলি ডিফল্টরূপে এটি করার সময় ইউআইএল চিত্রের প্রতিক্রিয়াগুলিতে ব্যাচিং সমর্থন করে না এমন কারণে এই অংশটি হতে পারে।
এছাড়াও, আমি ইউআইএল এর ডিস্ক ক্যাশে সিস্টেম পছন্দ করি না। আপনি বিভিন্ন প্রয়োগের মধ্যে চয়ন করতে গেলে, আমার এটি উল্লেখ করতে হবে যে এই মুহুর্তে ইউআইএল ডিস্ক ক্যাশে মোট আকার এবং সত্তার মেয়াদ শেষ হওয়ার সময় উভয়ই সীমাবদ্ধ করার উপায় নেই । ভলি এবং পিকাসো তা করেন এবং ইউআইএল এটি উপেক্ষা করার সময় তারা ডিফল্টরূপে সার্ভারের দ্বারা ফিরে আসা মেয়াদোত্তীর্ণ সময়টি ব্যবহার করে।
শেষ অবধি, ইউআইএল আপনাকে একটি বিশ্বব্যাপী চিত্র লোডার কনফিগারেশন সেট করার অনুমতি দেয় যা নির্বাচিত ডিস্ক ক্যাশে এবং মেমরি ক্যাশে বাস্তবায়ন এবং সেটিংস এবং অন্যান্য বিবরণ অন্তর্ভুক্ত করে তবে এই অ্যাপ্লিকেশনটি আপনার অ্যাপ্লিকেশানের সর্বত্র প্রয়োগ করা হবে। সুতরাং আপনার যদি দুটি পৃথক ডিস্ক ক্যাশের মতো আরও নমনীয়তার প্রয়োজন হয় তবে এটি ইউআইএল-এর কোনও দরকার নেই। অন্যদিকে ভলি আপনাকে নিজের কনফিগারেশন সহ যতগুলি ইচ্ছেমতো পৃথক চিত্র লোডার রাখতে দেয় allows পিকাসো ডিফল্টরূপে একটি বিশ্বব্যাপী উদাহরণ ব্যবহার করে তবে আপনাকে পৃথকভাবে কনফিগারযোগ্য দৃষ্টান্তগুলিও তৈরি করতে দেয়।
এর সংক্ষিপ্তসার হিসাবে: পিকাসোর সেরা এপিআই রয়েছে তবে এটি সমস্ত HttpURLConnection
দাবির মধ্যে ভাগ করা বিশ্বব্যাপী এইচটিটিপি ডিস্ক ক্যাশে ব্যবহার করে , যা কিছু ক্ষেত্রে খুব সীমাবদ্ধ হতে পারে। ভলির সেরা পারফরম্যান্স এবং মডুলারালিটি রয়েছে তবে এটি ব্যবহারকারী বান্ধব কম এবং আপনার নিজের মতো করে একটি মডিউল বা দুটি লিখতে হবে। সামগ্রিকভাবে আমি উভয়কেই ইউআইএল-এর বিরুদ্ধে সুপারিশ করব।
সম্পাদনা (ডিসেম্বর 18 2014): আমি এই প্রাথমিক উত্তরটি লেখার পর থেকে বিষয়গুলি পরিবর্তিত হয়েছে এবং আমি এটির উন্নতি করা প্রয়োজন বলে মনে করেছি:
পিকাসো ২.৪ পুরানো রিলিজের চেয়ে আরও কনফিগারযোগ্য এবং OkHttp (যা অত্যন্ত প্রস্তাবিত) এর সাথে ব্যবহার করার সময় এটি প্রতিটি উদাহরণের জন্য পৃথক ডিস্ক ক্যাশে ব্যবহার করতে সক্ষম হয় যাতে আপনি যা করতে পারেন তাতে সত্যিই কোনও বাধা নেই। আরও গুরুত্বপূর্ণ বিষয়, আমি লক্ষ্য করেছি যে পিকাসো এবং ওকে এইচটিপি-র পারফরম্যান্স অনেক উন্নতি করেছে এবং আমার মতে এটি এখন অ্যান্ড্রয়েড, সময়ের জন্য দ্রুততম ইমেজ লোডার সমাধান। দয়া করে নোট করুন যে আমার কোডে আমি সর্বদা মেমরির ব্যবহারের .fit()
সাথে .centerCrop()
বা .centerInside()
কম ব্যবহার করে এবং ইউআই থ্রেডের বিটম্যাপের আকার পরিবর্তন এড়াতে। পিকাসো সক্রিয়ভাবে বিকাশিত এবং সমর্থিত এবং এটি অবশ্যই একটি বড় প্লাস।
ভলির তেমন কোনও পরিবর্তন হয়নি তবে আমি এর মধ্যে দুটি বিষয় লক্ষ্য করেছি:
- কখনও কখনও ভারী বোঝার অধীনে কিছু ডিস্ক ক্যাশে দুর্নীতির কারণে কিছু চিত্র আর লোড হয় না।
- একটি নেটওয়ার্কআইমেজভিউতে প্রদর্শিত থাম্বনেলগুলি (এর স্কেল প্রকারের সাথে কেন্দ্রক্রপ সেট করা আছে) আপনি অন্যান্য লাইব্রেরির সাথে যা পান তার তুলনায় বেশ ঝাপসা।
এই কারণে ভলির ব্যবহার বন্ধ করার সিদ্ধান্ত নিয়েছি।
ইউআইএল এখনও ধীর (বিশেষত ডিস্ক ক্যাশে) এবং এর এপিআই এর প্রায়শই প্রায়শই পরিবর্তনের প্রবণতা রয়েছে।
আমি গ্লাইড 3 নামে এই নতুন লাইব্রেরিটিও পরীক্ষা করেছিলাম যা পিকাসোর মতো এপিআই দিয়ে পিকাসোর চেয়ে আরও অনুকূলিত হওয়ার দাবি করে। আমার ব্যক্তিগত অভিজ্ঞতা অনুসারে এটি ভারী লোডের অধীনে নেটওয়ার্ক অনুরোধের সময় পিকাসো এবং ভলির তুলনায় আসলে ধীরে ধীরে, এমনকি যখন OkHttp এর সংমিশ্রণে ব্যবহৃত হয়। সবচেয়ে খারাপ, কোনও ক্রিয়াকলাপ ছাড়ার সময় এটি ললিপপের অধীনে আমার অ্যাপ্লিকেশনগুলির সাথে কয়েকটি ক্র্যাশ করেছিল। এটির এর প্রতিযোগীদের তুলনায় এটির 2 সুবিধা রয়েছে:
- এটি অ্যানিমেটেড জিআইএফস ডিকোডিং সমর্থন করে
- এটি ডিস্ক ক্যাশে চূড়ান্ত ডাউনস্কেল বিটম্যাপস রাখে যার অর্থ ডিস্ক ক্যাশে থেকে ফিরে পড়া অত্যন্ত দ্রুত।
উপসংহার: আমি এখন পিকাসো + OkHttp ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি সর্বোত্তম নমনীয়তা, এপিআই, কার্য সম্পাদন এবং স্থিতিশীলতা একত্রিত করে। আপনার যদি জিআইএফ সমর্থন প্রয়োজন হয় তবে আপনি গ্লাইডকে বিবেচনা করতে পারেন।