প্রিলোড ম্যানেজার ধারণা

প্রিলোড ম্যানেজার ব্যবহারকারীদের কাছে দ্রুত কন্টেন্ট পৌঁছে দিয়ে এবং এক আইটেম থেকে অন্য আইটেমে যাওয়ার সময় অপেক্ষার সময় কমিয়ে তাদের আরও ভালো অভিজ্ঞতা দিতে সাহায্য করে। এটি আপনাকে প্রতিটি আইটেমের জন্য প্রিলোডিংয়ের সময়কাল এবং ক্রম নির্ধারণ করার সুযোগও দেয়।

সোশ্যাল মিডিয়ায় একটি সাধারণ দৃশ্য হলো, কোনো অ্যাপ ব্যবহারকারীকে বিভিন্ন মিডিয়া পছন্দের একটি তালিকা বা ক্যারোসেল দেখায়। উদাহরণস্বরূপ, একটি অ্যাপ ছোট ছোট ভিডিওর একটি ক্যারোসেল দেখাতে পারে। একটি ভিডিও শেষ হলে, অ্যাপটি পরেরটিতে চলে যায়। এবং ব্যবহারকারী যদি তার দেখা ভিডিওটি পছন্দ না করেন, তবে তিনি সোয়াইপ করে পরের বা আগের ভিডিওতে চলে যেতে পারেন।

আপনি যদি ভিডিও কন্টেন্ট আগে থেকে লোড না করেন, তবে এটি ব্যবহারকারীর জন্য একটি হতাশাজনক অভিজ্ঞতা হতে পারে। ব্যবহারকারী একটি মিডিয়া দেখা শেষ করার পর পরবর্তী মিডিয়া লোড হওয়ার জন্য অপেক্ষা করতে হয়।

অন্যদিকে, যদি আপনি অতিরিক্ত পরিমাণে কন্টেন্ট প্রি-লোড করেন, তাহলে এমন কন্টেন্ট লোড করতে শক্তি এবং নেটওয়ার্ক ব্যান্ডউইথ অপচয় হয় যা ব্যবহারকারী হয়তো কখনোই চালাবেন না।

DefaultPreloadManager আপনার অ্যাপকে এই বিষয়গুলোর মধ্যে ভারসাম্য বজায় রাখতে সাহায্য করে। প্রিলোড ম্যানেজার আপনার অ্যাপের সাথে মিলে প্রতিটি মিডিয়া আইটেমের গুরুত্ব নির্ধারণ করে এবং সেই অনুযায়ী সঠিক পরিমাণ আইটেম আগে থেকেই লোড করে রাখে।

শ্রম বিভাজন

আপনি যদি DefaultPreloadManager ব্যবহার করেন, তাহলে কিছু কাজ আপনার কোড দ্বারা এবং কিছু কাজ প্রিলোড ম্যানেজার দ্বারা সম্পন্ন হয়।

আপনার অ্যাপকে নিম্নলিখিত কাজগুলো করতে হবে:

প্রিলোড ম্যানেজার নিম্নলিখিত কাজগুলো করে:

  • এটি আপনার অ্যাপে যোগ করা সমস্ত মিডিয়া আইটেমের হিসাব রাখে।
  • প্রতিবার এর অগ্রাধিকারগুলো আপডেট করার সময়, এটি আপনার অ্যাপ দ্বারা বাস্তবায়িত একটি TargetPreloadStatusControl কল করে আপনার অ্যাপকে জিজ্ঞাসা করে। প্রতিটি মিডিয়া আইটেম কী পরিমাণে লোড করতে হবে তা জানার জন্যই এটি এই কলটি করে।
  • অ্যাপে তথ্য চাওয়ার পর, এটি প্রতিটি মিডিয়া আইটেমের যথাযথ পরিমাণ প্রি-লোড করে। প্রি-লোড ম্যানেজার আইটেমগুলো কোন ক্রমে লোড হবে তা নির্ধারণ করে। এটি ব্যবহারকারীর চালানো আইটেমের সবচেয়ে কাছের আইটেমগুলোকে অগ্রাধিকার দেয়।
  • অ্যাপটি যখন কন্টেন্টের জন্য অনুরোধ করে, তখন প্রিলোড ম্যানেজার আগে থেকে লোড করা কন্টেন্টসহ একটি MediaSource প্রদান করে।

প্রিলোড ম্যানেজার ওয়ার্কফ্লো

এই বিভাগে প্রিলোড ম্যানেজার ব্যবহারকারী একটি অ্যাপের সাধারণ কার্যপ্রবাহ বর্ণনা করা হয়েছে। এই উদাহরণে, আমরা ধরে নিচ্ছি যে অ্যাপটি ছোট ছোট ভিডিওর একটি ক্যারোসেল প্রদর্শন করে। নির্বাচিত ভিডিওটি স্বয়ংক্রিয়ভাবে চলতে শুরু করে, কিন্তু ব্যবহারকারী ক্যারোসেলটি যেকোনো দিকে স্ক্রল করতে পারেন, যা চলতে থাকা ভিডিওটি থামিয়ে দেয় এবং স্ক্রল করে অন্য ভিডিওটি চালু করে।

এই সমস্ত ধাপগুলো পরবর্তী পৃষ্ঠাগুলোতে বিস্তারিতভাবে আলোচনা করা হয়েছে।

  1. অ্যাপটি একটি টার্গেট প্রিলোড স্ট্যাটাস কন্ট্রোল তৈরি করে। প্রিলোড ম্যানেজার প্রতিটি মিডিয়া আইটেম কী পরিমাণে লোড করতে হবে তা জানার জন্য এই কন্ট্রোলটিকে কোয়েরি করে।
  2. অ্যাপটি একটি DefaultPreloadManager.Builder তৈরি করে এবং টার্গেট প্রিলোড স্ট্যাটাস কন্ট্রোলটি পাস করে। এরপর অ্যাপটি বিল্ডারটি ব্যবহার করে প্রিলোড ম্যানেজারটি তৈরি করে
  3. অ্যাপটি প্রিলোড ম্যানেজারে মিডিয়া আইটেম যুক্ত করে । অ্যাপটি প্রতিটি আইটেমের জন্য একটি সূচক প্রদান করে, যা ক্যারোসেলে আইটেমটির অবস্থান নির্দিষ্ট করে।
  4. প্রতিটি মিডিয়া আইটেমের জন্য, প্রিলোড ম্যানেজার টার্গেট প্রিলোড কন্ট্রোলকে কল করে জিজ্ঞাসা করে যে আইটেমটির কতটুকু লোড করা উচিত। টার্গেট প্রিলোড কন্ট্রোল একটি নির্দিষ্ট সময়কালের কন্টেন্ট লোড করতে, শুধু আইটেমটির মেটাডেটা ফেচ করতে, অথবা এই মুহূর্তে আইটেমটির কোনো অংশই ফেচ না করতে বলতে পারে। প্রিলোড ম্যানেজার এই তথ্য পাওয়ার পর, মিডিয়া কন্টেন্ট লোড করা শুরু করে।
  5. যখন ব্যবহারকারী কোনো কন্টেন্ট চালানো শুরু করেন, তখন অ্যাপটি সেই মিডিয়া আইটেমটির জন্য একটি MediaSource অনুরোধ করতে প্রিলোড ম্যানেজারকে কল করে। কোন মিডিয়া আইটেমটি চালানো হচ্ছে তা প্রিলোড ম্যানেজারকে জানানোর জন্য অ্যাপটি setCurrentPlayingIndex() ফাংশনটিও কল করে, যাতে মিডিয়া আইটেমগুলোর অগ্রাধিকার আপডেট করা যায়।
  6. যখনই প্রিলোড ম্যানেজারের অগ্রাধিকারগুলো আপডেট করা হয়, তখন প্রতিটি আইটেম কী পরিমাণে লোড করতে হবে তা জানার জন্য এটি টার্গেট প্রিলোড কন্ট্রোলকে আরও একবার কল করে।
  7. অ্যাপটি যখন ক্যারোসেলটি বন্ধ করে, তখন এটি তার রিসোর্স মুক্ত করার জন্য প্রিলোড ম্যানেজারকে রিলিজ করে দেয়