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

প্রিলোড ম্যানেজার আপনাকে ব্যবহারকারীদের একটি আইটেম থেকে অন্য আইটেমে স্যুইচ করার সময় অপেক্ষাকৃত কম অপেক্ষা সহ তাদের কাছে দ্রুত সামগ্রী পরিবেশন করে একটি ভাল অভিজ্ঞতা দিতে সাহায্য করে৷ এটি আপনাকে আইটেম প্রতি প্রিলোডিংয়ের সময়কাল এবং র‌্যাঙ্কিং কাস্টমাইজ করতে দেয়।

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

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

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

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

শ্রম বিভাজন

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

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

  • একই DefaultPreloadManager.Builder অবজেক্ট ব্যবহার করে অ্যাপের ExoPlayer অবজেক্ট তৈরি করুন যা আপনি প্রিলোড ম্যানেজার তৈরি করতে ব্যবহার করেন। একটি ExoPlayer তৈরি করতে DefaultPreloadManager.Builder.buildExoPlayer() এ কল করুন।
  • প্রতিটি মিডিয়া আইটেম সম্পর্কে প্রিলোড ম্যানেজারকে বলুন যে এটি ট্র্যাক করা উচিত । এটি ক্যারোজেলের সমস্ত বিষয়বস্তু নাও হতে পারে; পরিবর্তে, আপনি এটিকে প্রথম কয়েকটি আইটেম খেলার বিষয়ে বলতে পারেন। যেহেতু ব্যবহারকারী ক্যারোজেলের মাধ্যমে নেভিগেট করে, আপনি প্রিলোড ম্যানেজারের পুল থেকে মিডিয়া আইটেমগুলি যোগ করতে এবং সরাতে পারেন৷
  • ক্যারাউজেলের বিষয়বস্তু পরিবর্তিত হলে বা ব্যবহারকারী কোন আইটেমটি খেলছেন তা পরিবর্তন করলে প্রিলোড ম্যানেজারে অগ্রাধিকারগুলি বাতিল করুন৷ এটি প্রিলোড ম্যানেজারকে প্রতিটি মিডিয়া আইটেমের অগ্রাধিকার পুনরায় নির্ধারণ করতে এবং প্রয়োজনে সামগ্রী লোড করতে বলে৷ আপনি প্রথমে মিডিয়া আইটেমগুলি যোগ করার পরে এবং ব্যবহারকারী যখন একটি আইটেম থেকে অন্য আইটেমে চলে যায়, বা আপনি যখন ক্যারাউজেলে আইটেমগুলি যোগ বা সরান তখন আপনি প্রিলোড ম্যানেজারটিকে বাতিল করবেন৷
  • প্রিলোড ম্যানেজার থেকে প্রশ্নের উত্তর দিন , প্রতিটি আইটেমের জন্য কতটা কন্টেন্ট প্রিলোড করতে হবে তা ম্যানেজারকে বলুন।
  • ব্যবহারকারী কোনো আইটেম খেলা শুরু করলে প্রিলোড ম্যানেজার থেকে মিডিয়া আনুন ৷ প্রিলোড ম্যানেজার আপনার অ্যাপকে সেই বিষয়বস্তুর জন্য একটি MediaSource দেয়।

  • প্রিলোড ম্যানেজারকে রিলিজ করুন যখন আপনি এটির সাথে কাজ শেষ করেন, এর সংস্থানগুলি মুক্ত করুন৷

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

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

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

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

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

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